根据make的手册页,-n选项完成以下工作:
打印要执行但不执行的命令
我正在寻找一个在ApacheAnt中起同样作用的选项。
Horrific,但它就在这里。我们可以在运行时使用<script>
标签*中的一些代码来破解目标。下面do-dry-run
中的代码在每个目标上设置一个unless
属性,然后设置该属性,使它们都不执行。Ant仍然打印出由于unless
属性而未执行的目标的名称。
*(使用Oracle、OpenJDK和IBM版本的Java,Ant 1.8+似乎支持JavaScript脚本标记。)
<?xml version="1.0" encoding="UTF-8"?>
<project default="build">
<target name="targetA"/>
<target name="targetB" depends="targetA">
<echo message="DON'T RUN ME"/>
</target>
<target name="targetC" depends="targetB"/>
<target name="build" depends="targetB"/>
<target name="dry-run">
<do-dry-run target="build"/>
</target>
<macrodef name="do-dry-run">
<attribute name="target"/>
<sequential>
<script language="javascript"><![CDATA[
var targs = project.getTargets().elements();
while( targs.hasMoreElements() ) {
var targ = targs.nextElement();
targ.setUnless( "DRY.RUN" );
}
project.setProperty( "DRY.RUN", "1" );
project.executeTarget( "@{target}" );
]]></script>
</sequential>
</macrodef>
</project>
当我正常运行时,echo
发生:
$ ant
Buildfile: build.xml
targetA:
targetB:
[echo] DON'T RUN ME
build:
BUILD SUCCESSFUL
Total time: 0 seconds
但当我进行试运行时,它不会:
$ ant dry-run
Buildfile: build.xml
dry-run:
targetA:
targetB:
build:
BUILD SUCCESSFUL
Total time: 0 seconds
Ant没有像make或maven那样的干运行选项。但是您可以在eclipse下以调试模式一步一步地运行ant文件。
不,我相信。在Ant中默认情况下没有这样的方式。你会在谷歌上找到很多不成功的尝试。但我搜索过一次,都没有成功。
这将是一个有用的特性,但不容易实现。
Make和ANT在架构上大不相同。ANT不运行外部操作系统命令,相反,大多数ANT"任务"都在同一个Java线程中执行。
可以模拟如下"试运行":
<project name="Dry run" default="step3">
<target name="step1" unless="dry.run">
<echo>1) hello world</echo>
</target>
<target name="step2" depends="step1" unless="dry.run">
<echo>2) hello world</echo>
</target>
<target name="step3" depends="step2" unless="dry.run">
<echo>3) hello world</echo>
</target>
</project>
按如下方式运行ANT将打印目标名称,但不会执行附带的任务:
$ ant -Ddry.run=1
Buildfile: build.xml
step1:
step2:
step3:
BUILD SUCCESSFUL
Total time: 0 seconds
在构建脚本中创建一个特殊目标,该目标只进行一些回显,即检查
属性、路径。。正确解决
看见https://stackoverflow.com/a/6724412/130683回答类似的问题
要检查ant安装的详细信息,请使用ant -diagnostics