通过设置Ant中java和junit的dir属性来解决ant脚本只能在特定目录下正常运行

Ant是一种基于Java的build工具,利用它对程序进行编译,执行,打包十分方便。通常java程序中会有读写文件的操作,如果java或者junit中的dir属性设置不当,会发现ant脚本只能在某些特定目录才能运行正常。

通常ant的build.xml都会定义src和build目录,如果程序中需要读写的文件也放在build目录,那么我们通常都会将java或junit中的dir属性设置成"${build}"。Java程序中读写文件的path也将已${build}作为相对路径。那么为何设置了dir属性可以解决这个问题呢?因为dir属性决定了java程序中user.dir的值,也就就是调用jvm的当前目录。详解请参见转帖java.io.File的绝对路径和相对路径这篇文章。这样ant的脚本在不同目录下都能顺利执行。下面简单的列举了java和junit这2个task的一般用法。

 <java classname="test.Main"dir="${build}">

  <arg value="-h"/>

  <classpath>

    <pathelement location="dist/test.jar"/>

    <pathelement path="${java.class.path}"/>

  </classpath>

</java>

<junit printsummary="yes" fork="yes" dir="${build}">

  <formatter type="plain"/>

  <testname="my.test.TestCase"/>

</junit>

dir:调用jvm的当前目录。如果fork属性是屏蔽的,那么忽略dir属性。

对于稍大的java project,ant脚本中往往会调用其他ant脚本,以及和CruiseControl集成,利用上述方法我们就可以避免程序只能在某些特定目录下执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值