有人可以用Ant条件属性的例子解释我用“if”,“and”,“not”和“istrue”代码吗?
我是Ant的新手,需要帮助。
基本上我需要使用FTP下载文件。我有代码下载它。但在下载之前我需要检查的条件很少。
提前致谢。
答案 0 :(得分:12)
ant-contrib是广泛使用的库,if / else / for / foreach任务不仅可以更容易编写复杂的ant脚本,还可以使你的ant脚本更具可读性。
但是,既然你坚持:)
我过去处理这个问题的方法是设置一个只在设置属性X时才执行的任务A,并使任务A依赖于检查条件的某个任务B,如果属性为真,则设置属性X 。例如:
<target name="get-ftp-file" depends="check-need-ftp-file" if="ftp.call.required">
<ftp ... />
</target>
<target name="check-need-ftp-file">
<condition property="ftp.call.required">
<and>
<not>
<!-- Checks if Downloadstatusvariable variable is true -->
<istrue value="${Downloadstatusvariable}"/>
</not>
<not>
<!-- Checks if file is present in filesystem -->
<available file="${my.file}"/>
</not>
</and>
</condition>
</target>
编辑:
coolgokul,<and>
和<not>
任务是标准逻辑运算符。如果文件存在于本地计算机上,则上例中的<available>
条件的计算结果为true。但是我们只想在本地机器上不存在该文件时才下载该文件,因此我们将其包含在<not>
任务中。类似于${Downloadstatusvariable}
检查 - 我们希望确保它不是真的,因此我们使用<istrue>
然后将其打包在<not>
中。
最后,我们要确保变量不为真并且文件不存在,因此我们在<and>
中包含这两个条件。翻译成英文,我们问“下载文件是否属实,下载的文件不可用?”
建议您阅读有关条件运算符@ http://ant.apache.org/manual/Tasks/conditions.html
的更多信息希望有所帮助。
答案 1 :(得分:1)
标准Ant没有“if”任务,但您可以使用“条件”任务完成所需的任何条件逻辑。有关示例,请参阅http://ant.apache.org/manual/Tasks/condition.html。
还有一组额外的任务,包括ant-contrib库中的“if”任务,但我建议不要使用它,除非你真的需要,因为它会增加你的构建环境的复杂性
答案 2 :(得分:0)
您是否正在尝试使用Ant Contrib Task?。如果单击那里的链接,该文档将举例说明您可能希望通过每个任务实现的内容
可能会出现一些相关示例:Steve J's Blog