'make -n'相当于蚂蚁



根据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

相关内容

  • 没有找到相关文章

最新更新