在某些条件下运行Ant目标

时间:2015-06-12 14:07:55

标签: ant

我的project.xml中有以下Ant目标:

<target name="to.run.under.conditions"> 
</target> 

<target name="deploy1"> 
    <antcall target="deploy2"/>
</target>

<target name="deploy2">
    <antcall target="to.run.under.conditions"/>
</target>

<target name="another.target">
    <antcall target="deploy1"/>
</target>

我的目的是能够在运行to.run.under.conditions时排除目标another.target。我对ANT不是很熟悉,我很难理解如何处理这个问题。我尝试在unless="${target.running}"中使用,并在target name ="target.running"

内的条件任务中将属性设置为true

你能帮帮忙吗?

感谢您的帮助,

予。

----编辑更新的解决方案----

这是我目前的尝试(我使用的是ANT 1.8.2):

<target name="to.run.under.conditions" if="${target.running}"> 
</target>

<target name="another.target">
<property name="target.running" value="false"/> 
</target>

如果我没有弄错,因为another.target内的属性设置为false,那么to.run.under.conditions不应该运行(不过我可能错了)。是否有意义?任何评论都非常感谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>

在第一个示例中,如果设置了module-A-present属性(对任何值,例如false),则将运行目标。在第二个示例中,如果设置了module-A-present属性(再次设置为任何值),则不会运行目标。

有关详细信息,请参阅Any Targets

答案 1 :(得分:0)

我最终得到了这个似乎按预期工作的解决方案:

<target name="deploy2">
    <if>
        <equals arg1="${target.running}" arg2="true" />
        <then>
            <echo message="the target will not run" />
        </then>
        <else>
            <echo message="the target will run" />
                <antcall target="to.run.under.conditions"/>
        </else>
    </if>   
  </target>

    <target name="to.run.under.conditions"> 
    </target>

    <target name="another.target">
    <property name="target.running" value="true"/>  
    </target>

希望这有帮助,

予。