有条件地删除Ant

unj*_*nj2 5 java ant conditional-statements

如果属性"delete-compiled-dir"设置为true,我想删除该目录.如果属性为false,则不执行它.现在我有

<target name="deleted-after-compilation" depends="compile,jar">
        <condition property="${delete-compiled-dir}" value="true">
            <delete dir="${compilation-dir}" />
        </condition>
            <echo> Deleting Compiled Directory Classes </echo>
    </target>
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

condition doesn't support the nested "delete" element.
Run Code Online (Sandbox Code Playgroud)

Pet*_*ang 4

if您可以使用(请参阅手册)将条件添加到您的目标。

compilation-dir仅当设置属性(设置为任何值,例如)时,才会执行目标false

<target name="deleted-after-compilation" depends="compile,jar"
        if="${compilation-dir}">
    <delete dir="${compilation-dir}" />
    <echo> Deleting Compiled Directory Classes </echo>
</target>
Run Code Online (Sandbox Code Playgroud)

要仅在某个属性设置为 时执行它true,您需要先设置另一个属性并在if. 您可以将两者添加为另一个目标的依赖项:

<target name="set-delete-property">
    <condition property="delete-compilation-dir">
        <istrue value="${compilation-dir}"/>
    </condition>
</target>

<target name="deleted-after-compilation"
      depends="compile,jar" if="${compilation-dir}">
    ....

<target name="some-target"
      depends="set-delete-property,deleted-after-compilation">
</target>
Run Code Online (Sandbox Code Playgroud)