ant学习笔记(三)

今天喵喵来和大家讨论一下ant的三个小问题。

  1. <javac>task中source属性的指定。
  2. 如何使用非环境变量中指定的javac编译code。
  3. 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被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值