您的位置:首页 > 其它

ant学习笔记(三)

2007-12-22 23:17 218 查看
今天喵喵来和大家讨论一下ant的三个小问题。

<javac>task中source属性的指定。

如何使用非环境变量中指定的javac编译code。

ant中target的运行顺序。

第一个问题:

<javac>有一个可选的Attribute source,用于指定编译code的jdk级别,当然不能高于在run ant的jdk版本啦~~作用和ant -source选项是一样的。这边特别要说的就是IBM的jdk1.5和jdk1.4似乎有些不兼容,编译出来的class文件一个是49,一个是48的版本,似乎据说官方声明是一个bug,无法解决-_-b喵喵没有搞得太清楚,抱歉啊~~只是在此说明一下source指定还是很重要的。

第二个问题:

<javac>是可以指定使用哪个javac来编译的,而不一定要使用环境变量中配置的。这个就靠它的两个可选attribute:fork和executable了。fork可以另起一个javac,
而不是
在现在的环境中,默认设为no;executable在fork="yes"的情况下有效,他可以设定指定的javac,默认使用当前的。

示例脚本如下:

<javac srcdir="${src}"
destdir="${build}"
fork="yes"
executable="/opt/java/jdk1.1/bin/javac"
/>

第三个问题:

一个target可以依赖于其他的target,即depends这个Attribute。但是ant的depends 属性只指定了target应该被执行的顺序:如果被依赖的target无法运行,这种depends对于指定了依赖关系的target就没有影响。

Ant 会依照depends属性中target出现的顺序依次执行每个target。然而,要记住的是只要某个target依赖于一个target,后者就会被先执行。

例如:
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>

假定我们要执行targetD。从它的依赖属性来看,你可能认为先执行D,发现D依赖于C,就执行C,然后发现C依赖于B,执行B……最后A被执行。错了,C依赖于B,B依赖于A,所以先执行A,然后B,然后C,最后D被执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: