3

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

我是 Ant 新手,需要帮助。

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

  1. 在下载之前检查 Downloadstatus 变量值(通常是它的真或假值”)
  2. 检查文件是否已下载或在路径中可用
  3. 如果两个条件都失败,则执行 FTP 下载代码。

提前致谢。

4

3 回答 3

12

ant-contrib 是一个广泛使用的库,if/else/for/foreach 任务不仅使编写复杂的 ant 脚本变得更容易,它们还将使您的 ant 脚本更具可读性。

但是,既然你坚持:)

我过去处理此问题的方法是设置一个仅在设置属性 X 时执行的任务 A,并使任务 A 依赖于检查条件并设置属性 X 的某个任务 B(如果它们为真)。例如:

<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>如果文件存在于本地计算机上,则上述示例中的条件评估为真。但是我们只想在本地机器上不存在该文件时才下载该文件,因此我们将其包装在<not>任务中。与${Downloadstatusvariable}检查类似——我们想确保它不是真的,所以我们使用<istrue>然后将其包装在<not>.

最后,我们要确保变量不为真并且文件不存在,因此我们将这两个条件都包含在<and>. 翻译成英文,我们问“Downloadstatusvariable 是否不正确,下载的文件是否不可用?”

推荐你阅读更多关于条件运算符@http ://ant.apache.org/manual/Tasks/conditions.html

希望有帮助。

于 2012-07-19T00:34:43.193 回答
1

标准 Ant 没有“if”任务,但您可以使用“condition”任务执行几乎任何您需要的条件逻辑。请参阅http://ant.apache.org/manual/Tasks/condition.html举一些例子。

在ant-contrib库中有一组附加任务,包括“if”任务,但我建议不要使用它,除非你真的需要,因为它会增加你的构建环境的复杂性。

于 2012-07-18T18:58:42.127 回答
0

您是否正在尝试使用Ant Contrib Task?. 如果您单击那里的链接,该文档会举例说明您可能希望通过每个任务实现的目标

一些相关的例子可能在这里:Steve J's Blog

于 2012-07-18T18:53:40.843 回答