Ant ';make-n';蚂蚁的等价物

Ant ';make-n';蚂蚁的等价物,ant,makefile,Ant,Makefile,根据make的手册页,-n选项执行以下工作: Print the commands that would be executed, but do not execute them. 打印要执行的命令,但不要执行它们。 我正在寻找一个在ApacheAnt中起相同作用的选项。Ant没有make或maven所具有的干运行选项。但是您可以在eclipse下以调试模式一步一步地运行ant文件。不,我相信。在Ant中,默认情况下没有这种方法。你可以在谷歌上找到许多非歧视性的尝试。但我搜索过一次,但没有成功。

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

Print the commands that would be executed, but do not execute them. 打印要执行的命令,但不要执行它们。
我正在寻找一个在ApacheAnt中起相同作用的选项。

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-diagnostics

可怕,但它就在这里。我们可以在运行时使用
标记*中的一些代码攻击目标。下面的
do dry run
中的代码在每个目标上设置一个
除非
属性,然后设置该属性,使它们都不执行。Ant仍然打印出由于
属性而未执行的目标的名称,除非
属性

*(使用Oracle、OpenJDK和IBM版本的Java,Ant1.8+似乎支持JavaScript脚本标记。)

但当我进行干跑时,它不会:

$ ant dry-run
Buildfile: build.xml

dry-run:

targetA:

targetB:

build:

BUILD SUCCESSFUL
Total time: 0 seconds

非常合理的要求。令人惊讶的是,蚂蚁缺乏这种基本能力。
<?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>
$ 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