Ant 实现流程控制、遍历

简介: Ant 实现流程控制、遍历

if 逻辑判断


<if> 标签没有任何的标签内属性,在<if>标签下紧跟着嵌套一个条件判断任务,如果条件判断为真,则直接处理 <then> 标签的内容;如果条件为假,则跳转到 <elseif> 标签中,接下判断该标签内的条件判断并根据结果选择去处理接下来的 <then> 内容或者再跳转出来处理 <else> 标签的内容。

<property name="what.is.your.name" value="mobile.qq"/>
    <if>
      <equals arg1="${what.is.your.name}" arg2="mobile"/>
      <then>
        <echo message="My name is mobile."></echo>
      </then>
      <elseif>
        <equals arg1="${what.is.your.name}" arg2="qq"/>
        <then>
          <echo message="My name is qq."></echo>
        </then>
      </elseif>
      <else>
        <echo message="I don't know your name."/>
      </else>
    </if>


switch判断


switch 任务支持对特性(property)的直接比较判断。<switch>标签内只有一个属性”value”用于指定要进行判断的字符串或特性;里面可以内嵌<case>标签及<default>标签,<case>标签内有属性”value”用于指定被比较的字符串或特性,当两者匹配时,则执行<case>内的任务。否则跳转到<default>中去。在switch任务中必须至少有一个<case>标签或<default>标签。

<switch value="mobile.qq">
      <case value="mobile">
        <echo message="The value of property is mobile" />
      </case>
      <case value="qq">
        <echo message="The value of property is qq" />
      </case>
      <default>
        <echo message="The value of property is np" />
      </default>
    </switch>


for


发现for任务需要自定义一个命名空间

<antcontrib:for list="a,b,c,d,e" param="letter" 
      xmlns:antcontrib="antlib:net.sf.antcontrib">
      <sequential>
        <echo>Letter @{letter}</echo>
      </sequential>
    </antcontrib:for>


也可以使用fileset等数据元素动态指定在遍历的文件集合。

<ac:for param="xmlfile" 
      xmlns:ac="antlib:net.sf.antcontrib">
      <fileset dir="${basedir}" includes="**/*.xml"/>
      <sequential>
        <copy file="@{xmlfile}" todir="${des_dir}/for"></copy>
        <echo message="@{xmlfile}"/>
      </sequential>
    </ac:for>


变量(Variable)


变量(Variable)为 Ant 提供了一个值可变的特性,并且可以像 Java 中的参数赋值一样工作。变量的可变性虽然违背了标准的Ant特性规则,但有时候在构建过程中改变特性值的功能是有用的。变量可以单独设置,也可从一个标准的属性文件中加载。变量还有一个特点是,变量可以覆盖特性,但特性不能覆盖变量。因此,如果已经存在的特性,可以通过作用变量来对其进行值的修改。


变量有如下属性:


  • name: 变量名。


  • value: 变量的赋值。


  • unset: 当值为 true 时,将特性的值从构建环境中删除当作从未设置过。


  • file: 用于加载变量的标准的属性文件路径。


以上 4 个属性中,name 是必须设置的。但如果指定了标准的属性文件路径,则 name 可不设置

<property name="x" value="6"/>
<echo>${x}</echo>   <!-- will print 6 -->
<var name="x" unset="true"/>
<property name="x" value="12"/>
<echo>${x}</echo>   <!-- will print 12 -->
变量还支持在赋值的过程中直接进行字符串拼接
<var name="str" value="I "/>
<var name="str" value="${str} am "/>
<var name="str" value="${str} a "/>
<var name="str" value="${str} string."/>
<echo>${str}</echo>     <!-- print: I am a string. -->


我还是建议既然叫 var 就只是变量的功能, unset 属性尽量不用, 违背了 ant 的只赋值一次的初衷。


condition


<target name="IfExistUploadDevNewToSFtp">
    <condition property="devNew.apk.exist">
      <resourceexists>
        <file file="${devNew.apk.path}"/>
      </resourceexists>
    </condition>
    <antcall target="uploadDevNewToSFtp" />
  </target>


参考



目录
相关文章
|
5月前
|
大数据 Python
Python中for循环的嵌套应用
Python中for循环的嵌套应用
60 1
|
5月前
|
大数据 Python
Python中while循环的嵌套应用详解
Python中while循环的嵌套应用详解
54 0
|
2月前
|
JavaScript 前端开发
JavaScript基础&实战(3)js中的流程控制语句、条件分支语句、for循环、while循环
这篇文章讲解了JavaScript中的流程控制语句,包括基本的if条件判断、弹窗提示输入、switch条件分支语句、while和do...while循环以及for循环的使用和示例。
JavaScript基础&实战(3)js中的流程控制语句、条件分支语句、for循环、while循环
|
5月前
|
存储 前端开发 开发者
sass遍历,条件判断的用法(还是写下来方便找啊!)
sass遍历,条件判断的用法(还是写下来方便找啊!)
|
10月前
|
Apache
hooks为什么不能在条件语句中使用,如果修改源码,怎么能让它支持条件语句?
hooks为什么不能在条件语句中使用,如果修改源码,怎么能让它支持条件语句?
71 1
|
5月前
|
C# 图形学
【Unity 3D】C#中while do while for foreach等循环语句的讲解(附测试代码)
【Unity 3D】C#中while do while for foreach等循环语句的讲解(附测试代码)
204 0
|
12月前
|
Python
python之while循环,无限循环,while循环的嵌套的定义和使用。
python之while循环,无限循环,while循环的嵌套的定义和使用。
|
Java C++ Python
Python基础语法第三章之顺序循环条件
条件语句能够表达 "如果 ... 否则 ..." 这样的语义. 这构成了计算机中基础的 逻辑判定.条件语句 也叫做 分支语句, 表示了接下来的逻辑可能有几种走向.一个典型的例子:如果丘处机没有路过牛家村,1. 那么金兵不会死在郭, 杨两家手上2. 郭, 杨两家就不会流亡北方3. 郭夫人就不会去到大漠, 完颜洪烈就不会遇到包惜弱4. 郭靖就不会和江南七怪救了铁木真5. 蒙古就不会统一6. 蒙古铁骑就不会西征7. 欧洲就不会出现火药, 也就不会出现文艺复兴, 大航海.
119 0
|
机器学习/深度学习 数据采集 数据挖掘
【python进阶】你还在使用for循环新建数组?生成器表达式帮你一行解决
在本文中,介绍了生成器与表达式的用法,帮助我们快速创建数组以及其他序列,解锁了python序列的新姿势。在后续的更新中,我将继续对元组的高级姿势和玩法进行介绍。
14628 2
【python进阶】你还在使用for循环新建数组?生成器表达式帮你一行解决
|
Python
Python | 循环与递归的区别
Python | 循环与递归的区别
220 0