Ant任务
Posted jrri
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ant任务相关的知识,希望对你有一定的参考价值。
Ant标签解析
target
failonerroe
:出现错误的时候停止,缺省值"true"
delete
includeemptydirs
:是否删除空目录. 缺省"true"
replace
- 指定文件,寻找标识,替换其内容
file
:指定文件token
:标识符号为value
:需要替换的内容
<replace file="aaa.xml" token="@BUILD_MODE@" value="Mode.SIT" encoding="UTF-8" />
jar
将.class打包为.jar
basedir
:类所在的基目录destdir
:放打包好的jar包的目录
filterset
一组过滤器的集合,里面存放filter
filter
token
:过滤器的标识value
:过滤器的值
filter的使用和replace几乎是一样的
fileset
一组文件的集合
dir
:指定文件夹exclude
:排除哪些文件include
:包含哪些文件
include
- name="** /* .jar" 需要包含的文件名.
- ** /* .jar 文件树下所有的jar包
-
- .jar 当前目下的jar包
ant标签, antfile标记
<target name="zip">
<ant antfile="build.xml" dir="../../" />
<ant antfile="push_sit.xml" dir="../../" />
</target>
antcontrib
ant判断
ant脚本自带的语法.condition
可以使用且常用的标签:
isture
: 真假判断not
:非and
:与or
:或available
:值是否可用isset
:查看值是否存在equals
:对比两个值是否一致, 标签内放置两个数值, 判断是否一致.
<equals arg1="${var}" arg2="123"></equals>
filesmatch
:比较文件是否一致.
contrib
ant脚本不支持循环, if, 等标签.
想要使用逻辑判断的话,需要再nat中添加依赖.ant-contrib
%ant%/lib/ant-contrib
添加该依赖之后, 然后在xml脚本中引用.
引用语法:
<taskdef resource="net/sf/antcontrib/antlib.xml" />
该语法推荐放在xml脚本的project
标签内的第一行.
放在project外面无法使用,放在靠后则前半段无法使用.
for循环
依赖contrib
默认标签为foreach
foreach内,放置三个属性:
list
:包含多个变量的列表param
:参数,每次循环从列表中取出来的值.target
:每次循环把参数传入目标target, 执行一次.
在循环中可以设置parallel
[平行]和maxThread
[最大线程]参数.
语法如下:
<taskdef resouce="net/sf/antcontrib/antlib.xml" />
<target name="foreach">
<foreach target="show" list="1,2,3,4" param="var" parallel="True" maxThreads="3">
</foreach>
</target>
<target name="show">
<echo message="${var}"></echo>
</target>
声明list
在ant脚本中, 声明属性通过<property>
标签
声明列表也同样如此.
不过在声明列表的时候, 需要注意:
list
属性,同样是一个字符串
多个属性中间,
分割.
属性之间,不能有任何
空格,否则切割出来的值也会有
空格,会影响判断结果.
contrib中常用的判断组合
if
then
else
一般搭配ant自带的值相等判断的equals
<if>
<equals arg1="${var}" arg2="123" />
<then>
<echo message="${var} == 123" />
</then>
<else>
<echo message="${var} != 123" />
</else>
</if>
关于foreach
/for
;$
和@
的区别
循环的两种形式:
-
foreach
针对的是, 转换任务的遍历方式, 通过depends
标签,能够使所有的任务都能共享到该循环变量.
antcall
可以通过param
标签来继承属性. -
for
针对的是单个任务中的遍历. 循环体需要嵌套在sequential
标签内部.
两个属性:list
,param
变量使用:@{var}
<for list="1,2,3,4" param="var">
<sequential>
<echo message="@{var}"></echo>
</sequential>
</for>
关于for内switch内设置property
关于属性
<property>
是声明属性, 无法多次设置同一个参数.
<property>
只能初始化属性,却不能改变已设置属性的值.
如果需要改变属性, 则需要使用antcontrib
内的<var>
标签
<property name="label" value="5" />
<!-- label==5 -->
<property name="label" value="4" />
<!-- label==5 -->
<var name="label" value="3"/>
<!-- label==3 -->
关于依赖
在使用ant解决依赖的时候
通常使用三种方式:
- 常规依赖,直接添加jar包即可.使用
<classpath>
标签 - 循环依赖, 使用
<sourcepath>
,直接使用源码. - EOS普元, 找到EOS的workspace,对应的lib. 整个导入.
以上是关于Ant任务的主要内容,如果未能解决你的问题,请参考以下文章