2012-07-18 47 views
3

可有人请用“如果”,“和”蚂蚁条件属性的例子来解释我,“不是”和“IsTrue运算”的代码?需要蚂蚁条件例如

我是新来的蚂蚁,需要在这方面的帮助。

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

  1. 下载之前检查路径
  2. 的Downloadstatusvariable值(通常它的真或假值“)
  3. 检查文件是否已经下载或可如果这两个条件,失败则执行的是FTP下载代码。

在此先感谢。

回答

12

蚂蚁的contrib被广泛使用的库和的if/else /为/的foreach任务不仅会使其更易于编写复杂的Ant脚本,它们会让你的ant脚本更具可读性。

但是,既然你坚持:)

我已经在过去处理这个问题的方法是设置任务的如果属性x设置,只有执行,并进行任务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>包裹这两个条件。翻译成英文,我们问“Downloadstatus变量不正确,并且下载的文件不可用?“

推荐你@http://ant.apache.org/manual/Tasks/conditions.html

希望帮助更多有关条件的运营商。

+0

Hey Choover,谢谢你的帮助。你能解释一下我在这里解释我的wat“and”和“not”操作符的功能吗?我总是对这些东西感到困惑...... :-( – coolgokul 2012-07-19 14:49:23

+0

好的答案。我不同意ant-contrib是一个好主意,正因为它可以让你创建复杂的构建脚本......但这当然是一个问题当我在ANT中执行标准任务时,我自己嵌入了一种脚本语言(比如groovy) – 2012-07-19 18:21:07

+0

Mark O'Connor,我从来没有在Ant脚本中看到过嵌入Groovy,谢谢你的提示! – choover 2012-07-19 23:27:06

0

您尝试使用Ant Contrib Task?。如果你点击那边的链接,该文件解释机智^ h例如,您可能想要通过每个任务

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

+0

感谢Sujay。我不想使用Ant的Contrib任务,我只需要使用标准的蚂蚁。 – coolgokul 2012-07-18 19:03:07

+0

也许你可以告诉我们你真正想要达到的目标吗?这样一来,我们可以更容易地帮助你一些指针。我不认为stackoverflow将在不久的将来成为一个教程网站!您可能需要修改您的问题并在其中添加更多信息 – Sujay 2012-07-18 19:15:22

+0

感谢Sujay ..将编辑和提问并重新发布。:-) – coolgokul 2012-07-18 19:23:41

1

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

还有一套附加任务,其中包括ant-contrib库中的“if”任务,但除非您确实需要,否则由于其复杂性将添加到构建环境中,因此我建议不要使用此任务。

+1

感谢加雷斯。我不想使用Ant contrib lib。我需要使用标准的Ant。我读过这个文档,但觉得我需要更多的条件属性与“和”和“不”和“iftrue”的例子。 – coolgokul 2012-07-18 19:05:53