Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 如何使蚂蚁目标相互排斥?_Ant - Fatal编程技术网

Ant 如何使蚂蚁目标相互排斥?

Ant 如何使蚂蚁目标相互排斥?,ant,Ant,在ANT中,通过使用target.depends属性很容易设置目标依赖关系 但是,我如何设置一些目标,它们是相互排斥的。因此,在执行它们之前,它将检查目标组合?您可以让它们中的每一个定义一个公共属性,并且仅在尚未设置此属性时执行: <target name="a" unless="aOrBAlreadyRun"> <property name="aOrBAlreadyRun" value="true"/> ... </target> <

在ANT中,通过使用target.depends属性很容易设置目标依赖关系


但是,我如何设置一些目标,它们是相互排斥的。因此,在执行它们之前,它将检查目标组合?

您可以让它们中的每一个定义一个公共属性,并且仅在尚未设置此属性时执行:

<target name="a" unless="aOrBAlreadyRun">
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

<target name="b" unless="aOrBAlreadyRun">
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

...
...
有关解释,请参阅

编辑:

如果希望在执行两个目标时生成失败,则在已设置属性时失败:

<target name="a">
    <fail if="aOrBAlreadyRun" 
          message="You can't have a and b executed in the same build"/>
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

<target name="b">
    <fail if="aOrBAlreadyRun" 
          message="You can't have a and b executed in the same build"/>
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

...
...

您可以让它们各自定义一个公共属性,并且只有在尚未设置此属性的情况下才能执行:

<target name="a" unless="aOrBAlreadyRun">
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

<target name="b" unless="aOrBAlreadyRun">
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

...
...
有关解释,请参阅

编辑:

如果希望在执行两个目标时生成失败,则在已设置属性时失败:

<target name="a">
    <fail if="aOrBAlreadyRun" 
          message="You can't have a and b executed in the same build"/>
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

<target name="b">
    <fail if="aOrBAlreadyRun" 
          message="You can't have a and b executed in the same build"/>
    <property name="aOrBAlreadyRun" value="true"/>
    ...
</target>

...
...

实现独占的最佳方法非常简单


只是不要将它们写入同一个build.xml文件,而是复制它并相应地修改两个版本。

实现这一点的最佳方法非常简单


只是不要将它们写入同一个build.xml文件,而是复制一份,并相应地修改两个版本。

在执行其中一个版本后,检查并跳过该版本,而不显示警告或错误消息。您的意思是,如果两个目标都执行,您希望ant带着错误退出吗?酷。有可能在之前警告它吗?之后不停止?在执行其中一个目标后检查并跳过,没有警告或错误消息。您的意思是,如果两个目标都执行了,您希望ant带着错误退出吗?酷。有可能在之前警告它吗?之后不停止吗?