Ant 实现流程控制、遍历
if 逻辑判断
<if>
标签没有任何的标签内属性,在 <if>
标签下紧跟着嵌套一个条件判断任务,如果条件判断为真,则直接处理 <then>
标签的内容;如果条件为假,则跳转到 <elseif>
标签中,接下判断该标签内的条件判断并根据结果选择去处理接下来的 <then>
内容或者再跳转出来处理 <else>
标签的内容。
1 | <property name="what.is.your.name" value="mobile.qq"/> |
switch判断
switch 任务支持对特性(property)的直接比较判断。<switch>
标签内只有一个属性 ”value” 用于指定要进行判断的字符串或特性;里面可以内嵌 <case>
标签及 <default>
标签,<case>
标签内有属性”value”用于指定被比较的字符串或特性,当两者匹配时,则执行 <case>
内的任务。否则跳转到 <default>
中去。在switch任务中必须至少有一个 <case>
标签或 <default>
标签。
1 | <switch value="mobile.qq"> |
for
发现 for 任务需要自定义一个命名空间
1 | <antcontrib:for list="a,b,c,d,e" param="letter" |
也可以使用 fileset
等数据元素动态指定在遍历的文件集合。
1 | <ac:for param="xmlfile" |
变量(Variable)
变量(Variable)为 Ant 提供了一个值可变的特性,并且可以像 Java 中的参数赋值一样工作。变量的可变性虽然违背了标准的 Ant 特性规则,但有时候在构建过程中改变特性值的功能是有用的。变量可以单独设置,也可从一个标准的属性文件中加载。变量还有一个特点是,变量可以覆盖特性,但特性不能覆盖变量。因此,如果已经存在的特性,可以通过作用变量来对其进行值的修改。
变量有如下属性:
- name: 变量名。
- value: 变量的赋值。
- unset: 当值为 true 时,将特性的值从构建环境中删除当作从未设置过。
- file: 用于加载变量的标准的属性文件路径。
以上 4 个属性中,name 是必须设置的。但如果指定了标准的属性文件路径,则 name 可不设置
1 | <property name="x" value="6"/> |
我还是建议既然叫 var 就只是变量的功能, unset 属性尽量不用, 违背了 ant 的只赋值一次的初衷。
condition
1 | <target name="IfExistUploadDevNewToSFtp"> |
参考
[Ant][StartWithAnt] 第七章 Ant 扩展包 ant-contrib 的使用 - Sodino 的专栏 - CSDN 博客 https://blog.csdn.net/sodino/article/details/16923615?utm_source=copy