我的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"
你能帮帮忙吗?
感谢您的帮助,
予。
----编辑更新的解决方案----
这是我目前的尝试(我使用的是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
不应该运行(不过我可能错了)。是否有意义?任何评论都非常感谢!
答案 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>
希望这有帮助,
予。