【问题标题】:Need Ant condition example需要 Ant 条件示例
【发布时间】:2012-07-17 21:31:01
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

    标签: ant ant-contrib


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢苏杰。我不想使用 Ant Contrib 任务。我只需要使用标准 Ant。
    • 也许您可以告诉我们您到底想要达到什么目标?这样,我们就可以更轻松地为您提供一些指导。我不认为 stackoverflow 在不久的将来会成为一个教程网站! :) 也许您可能想修改您的问题并添加更多信息。
    • 谢谢 Sujay.. 将编辑问题并再次发布。 :-)
    【解决方案2】:

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

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

    【讨论】:

    • 感谢加雷斯。我不想使用 Ant contrib lib。我需要使用标准蚂蚁。我阅读了该文档,但觉得我需要更多带有“and”、“not”和“iftrue”的 Condition 属性示例。
    【解决方案3】:

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

    最后,我们要确保变量不为真且文件不存在,因此我们将这两个条件都包含在&lt;and&gt; 中。翻译成英文,我们问的是“Downloadstatusvariable 不正确,下载的文件不可用吗?”

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

    希望对您有所帮助。

    【讨论】:

    • 您好 Choover,感谢您的帮助。你能解释一下这里的“and”和“not”运算符功能吗?我总是对这些事情感到困惑......:-(
    • 好答案。我不同意 ant-contrib 是一个好主意,正是因为它使您能够创建复杂的构建脚本......但这当然是一个品味问题。当 ANT 中的标准任务不能胜任工作时,我个人会嵌入脚本语言(如 groovy)。
    • Mark O'Connor,我以前从未见过在 Ant 脚本中嵌入 groovy。感谢您的提示!
    • 这是一个很好的例子,因为它也适用于我的用例(稍作改动),但我认为您需要将“task”XML 元素更改为“target”?跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2015-05-30
    • 2017-02-15
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多