gpt4 book ai didi

ant - 'make -n'等价于ant

转载 作者:行者123 更新时间:2023-12-03 08:09:56 24 4
gpt4 key购买 nike

根据make的手册页,-n选项执行以下工作:

打印将要执行的命令,但不执行它们。

我正在寻找一个在Apache Ant中具有相同功能的选项。

最佳答案

太可怕了,可是在这里。我们可以使用<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 -n'等价于ant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com