Apache Ant If和Unless用法

Ant ifunless都是<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开始,可以使用属性扩展,只有当valuetrue时才允许执行。在新版本中,它提供了更大的灵活性,现在可以从命令行覆盖条件值。请参阅下面的示例。

文件: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

上一篇:Apache Ant命令行参数

下一篇:Apache Ant类型

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程