需要Ant条件示例

时间:2012-07-18 18:47:43

标签: ant ant-contrib

有人可以用Ant条件属性的例子解释我用“if”,“and”,“not”和“istrue”代码吗?

我是Ant的新手,需要帮助。

基本上我需要使用FTP下载文件。我有代码下载它。但在下载之前我需要检查的条件很少。

  1. 在下载之前,请检查Downloadstatusvariable值(通常是其真或假值)
  2. 检查文件是否已下载或在路径中可用
  3. 如果两个条件都失败则执行FTP下载代码。
  4. 提前致谢。

3 个答案:

答案 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