Apache Ant If和Unless用法
精华
小牛编辑
101浏览
2023-03-14
Ant if
和unless
都是<target>
元素(tasks)的属性。 这些属性用于控制任务是否运行的任务。
除了target
之外,它还可以与<junit>
元素一起使用。
在早期版本和Ant 1.7.1中,这些属性仅是属性名称。 如果定义了属性,则即使值为false
也会运行。
例如,即使在传递false
之后也无法停止执行。
文件:build.xml -
<project name="java-ant project" default="run">
<target name="compile">
<available property="file.exists" file="some-file"/>
<echo>File is compiled</echo>
</target>
<target name="run" depends="compile" if="file.exists">
<echo>File is executed</echo>
</target>
</project>
输出:
无参数:没有命令行参数运行它。 只需输入ant
到终端,但首先找到项目位置,它将显示空输出。
使用参数:现在只传递参数:false
。
Ant -Dfile.exists = false
得到以下结果:
E:\worksp\ant\AntProject>Ant -Dfile.exists = false
Buildfile: E:\worksp\ant\AntProject\build.xml
compile:
[echo] File is compiled
run:
[echo] File is executed
BUILD SUCCESSFUL
Total time: 0 seconds
使用参数:现在只传递参数:true
。
Ant -Dfile.exists = true
执行上面示例代码,得到以下结果:
E:\worksp\ant\AntProject>Ant -Dfile.exists = true
Buildfile: E:\worksp\ant\AntProject\build.xml
compile:
[echo] File is compiled
run:
[echo] File is executed
BUILD SUCCESSFUL
Total time: 0 seconds
从Ant 1.8.0开始,可以使用属性扩展,只有当value
为true
时才允许执行。在新版本中,它提供了更大的灵活性,现在可以从命令行覆盖条件值。请参阅下面的示例。
文件:build.xml
<project name="java-ant project" default="run">
<target name="compile" unless="file.exists">
<available property="file.exists" file="some-file"/>
</target>
<target name="run" depends="compile" if="${file.exists}">
<echo>File is executed</echo>
</target>
</project>
输出
无参数:在没有命令行参数的情况下运行它。 只需输入ant
到终端,但首先找到项目的位置,它将显示空输出。
使用参数:现在传递参数,但只使用false
。
Ant -Dfile.exists = false
没有输出,因为这次没有执行。
使用参数:现在传递参数,但只使用true
。 现在它显示输出,因为if
被评估。
Ant -Dfile.exists = true
E:\worksp\ant\AntProject>Ant -Dfile.exists = true
Buildfile: E:\worksp\ant\AntProject\build.xml
compile:
run:
[echo] File is executed
BUILD SUCCESSFUL
Total time: 0 seconds