Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383065
  • 博文数量: 85
  • 博客积分: 1504
  • 博客等级: 上尉
  • 技术积分: 928
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-04 12:20
文章分类

全部博文(85)

文章存档

2011年(66)

2010年(19)

分类: Java

2011-07-05 13:39:10

Ant尝鲜手记

http://www.cnblogs.com/codinglife/archive/2010/09/21/1831934.html

Ant这东西上手起来很快,无非就是看看manaul,写写xml. 不过不论学习什么,具体细节过程总会有各种问题.下面是我遇到并解决的小问题(windows环境)
1. ant中怎么使用c操作系统环境变量

主要是用到ant中的env这个值, environment的前三个字符。 使用方法:

 

<project name="Build" default="test" basedir=".">
<property environment="env"/>
<property name="SystemRoot.path" value="${env.SystemRoot}" />
<property name="ANT_HOME.path" value="${env.ANT_HOME}" />
<property name="OS.type" value="${env.OS}" />
<target name="test">
<echo message="The path of system root: ${SystemRoot.path}" />
<echo message="The path of ant home: ${ANT_HOME.path}" />
<echo message="The type of OS: ${OS.type}" />
target>
project>

 

 

2. ant中怎么调用cmd中的命令

使用<exec executable="cmd">和其参数<arg line="/c ......" />

比如我要用cmd中的方式输出当前的日期和时间:

 

<project name="Build" default="test" basedir=".">
<target name="test">
<exec executable="cmd">
<arg line="/c echo Hi, dude, the date is %date%, and the time is %time%" />
exec>
target>
project>

 

 

3. ant中怎么执行第三方程序

与上面类似, 只不过executable的值换成第三方app地址, 参数line的值换成app需要的参数值

 

4. ant怎么传入参数

ant命令后面这样加参数  ant -DYourArgName=YourArgValue, 就是参数要跟在-D后面, 然后build文件就可以通过 ${YourArgName}使用这个参数了。

比如我要传入两个参数BuildProject.name和BuildProject.info

 

ant -DBuildProject.name=ATestProject -DBuildProject.info=nothing

 

 

Build文件中就可以这样使用:

 

<project name="Build" default="test" basedir=".">
<target name="test">
<echo message="The project name is ${BuildProject.name}, and this guy wants to say ${BuildProject.info}" />
target>
project>

 

5. ant中如何从文件里读取内容

使用ant中的loadfile命令,可以将文件内容读取到一个property中

 

<project name="Build" default="test" basedir=".">
<target name="test">
<loadfile property="MessageFromFile" srcFile="ContentInFile.txt"/>
<echo message="${MessageFromFile}" />
target>
project>

 

 

 

6. ant中如何输出log到文件

如果打算把整个ant执行都输出到Log,请使用ant的 -l 参数

 

ant -l antlog.log

 

 

如果只是想在ant中输出想输出的信息到log, 请参考第2条

 

<project name="Build" default="test" basedir=".">
<target name="test">
<exec executable="cmd">
<arg line="/c echo print this message to the log>>log.txt" />
exec>
target>
project>

 

7. ant中executable中程序参数中如何使用双引号

正常情况吓死, arg中的值不能直接使用双引号, 否则会出错. 请使用xml中双引号的描述符 "代替

 

小经验: 

1. target的执行逻辑要明细,也就是要组织好我们的target,target量比较大尤其要这样。 最初每个target可以不实现, 只需echo出你懂的message即可, 这样你好先把真那个执行逻辑理清, 后面顺着清晰的思路写就行了。每个target的name要仔细思考,也是为了顺脑。

2. 涉及经常变化的、路径相关的属性写进属性文件里, Build文件本身不应该有太多具体的属性值,因为一旦有变化, 修改起来就比较不顺手。 而且这会让build文件更轻量、更好看, 其它需要配置脚本的人员也不需要了解你的具体执行逻辑, 在你的属性文件里进行更改即可

3. 网上大多数例子都是ant和java结合使用的, 实际上只要环境变量有了, ant和其它语言也可以结合, 看自己需求了. 为了某些需求,甚至可以写一些简单的app用在你的ant里。比如我自己,因为特殊情况,写了个拿文件版本的app用在ant里, 为了使solution和输出文件的压缩打包文件占用空间更小,我没用ant自带的zip, 而是用了7z command版,每次编译还是可以节约不少空间的。(真是为了达到目的,不择手段呀)

4. 用一些ant库,可能会让你事半功倍

 

Ant毕竟是描述性的xml,做逻辑处理十分难受, 代码重用也要绕很大弯子. 这方面讨论有条比较好的

类似的build tools有maven和

------------- Simply Enjoy
阅读(2055) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~