ant 各种标签属性参数介绍

本文详细介绍了Ant自动化构建工具的基本使用方法,包括如何指定构建文件、执行目标(target)及依赖管理等。此外还深入探讨了任务(task)、属性(properties)、路径管理(path-like structures)等内容。
摘要由CSDN通过智能技术生成

1 没有指定任何参数时,Ant会在当前目录下查询build.xml文件

2 可以指定执行一个或多个target。当省略target时,Ant使用标签的default属性所指定的target

3 编写build.xml (ant 1.8.2)

3.1 Project

<project name="demo" default="all" basedir=".">

</project>

project有下面的属性:
(1) name –项目名称(Required:No)
(2) default –当没有指定target时使用的缺省target (Required:No)
(3) basedir –用于计算所有其他路径的基路径。该属性可以被basedir property覆盖。如果属性和basedir property都没有设定,就使用buildfile文件的父目录。 (Required:No)

3.2 Targets

<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>

假定我们要执行target D。C依赖于B,B依赖于A,所以先执行A,然后B,然后C,最后D被执行。
一个target只能被执行一次,即时有多个target依赖于它。

<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>

module-A-present有值,执行target build-module-A,不执行target build-own-fake-module-A。
target有下面的属性:
(1) name –target的名字 (Required Yes)
(2) depends –用逗号分隔的target的名字列表,也就是依赖表。 (Required No)

(3) if –满足条件执行(true)。 (Required No)

(4) unless –不满足条件执行(false)。 (Required No)

(5) description –关于target功能的简短描述。 (Required No)

(6) extensionOf –把当前target加入到指定target的依赖中。(Required No) –ant 1.8.0

(7) onMissingExtensionPoint –如果(6)中指定的target不存在怎么办(“fail”,”warn”,”ignore”)。(Required No ,必须设置了extensionOf才能用,默认“fail”.) –ant 1.8.2

3.3 Tasks

一个task是一段可执行的代码。
可以给task赋一个id属性:

<taskname id="taskID" ... />

这里taskname是task的名字,而taskID是这个task的唯一标识符。通过这个标识符,你可以在脚本中引用相应的task。例如,在脚本中你可以这样:

<script ... >
task1.setFoo("bar");
</script>

设定某个task实例的foo属性。在另一个task中(用java编写),你可以利用下面的语句存取相应的实例。

project.getReference("task1").

注意:如果task1还没有运行,就不会被生效(例如:不设定属性),如果你在随后配置它,你所作的一切都会被覆盖。

3.4 Properties

(1)

<property file="sample.properties"/>
<--在属性文件 sample.properties中: -->
dir.build=builddir.src=srcjdom.home=../java-tools/jdom-b8jdom.jar=jdom.jarjdom.jar.withpath=${jdom.home}/build/${jdom.jar} 
(

2)

<property name="builddir" value="build" />

${builddir} /classes可被解析为build/classes

内置属性
例如,${os.name}对应操作系统的名字。

java.version                    Java Runtime Environment version 
java.vendor                         Java Runtime Environment vendor 
java.vendor.url                     Java vendor URL 
java.home                       Java installation directory 
java.vm.specification.version       Java Virtual Machine specification version 
java.vm.specification.vendor        Java Virtual Machine specification vendor 
java.vm.specification.name      Java Virtual Machine specification name 
java.vm.version                     Java Virtual Machine implementation version 
java.vm.vendor                  Java Virtual Machine implementation vendor 
java.vm.name                        Java Virtual Machine implementation name 
java.specification.version      Java Runtime Environment specification version 
java.specification.vendor           Java Runtime Environment specification vendor 
java.specification.name             Java Runtime Environment specification name 
java.class.version              Java class format version number 
java.class.path                     Java class path 
java.library.path               List of paths to search when loading libraries 
java.io.tmpdir                  Default temp file path 
java.compiler                   Name of JIT compiler to use 
java.ext.dirs                   Path of extension directory or directories 
os.name                             Operating system name 
os.arch                             Operating system architecture 
os.version                      Operating system version 
file.separator                  File separator ("/" on UNIX) 
path.separator                  Path separator (":" on UNIX) 
line.separator                  Line separator ("\n" on UNIX) 
user.name                       User's account name 
user.home                       User's home directory 
user.dir                        User's current working directory 

baseddir –project基目录的

绝对路径 (与的basedir属性一样)

ant.file –buildFile的绝对路径

ant.version –Ant的版本

ant.project.name –当前执行的project的名字,由的name属性设定

ant.project.default-target –当前执行的project的default-target名字

ant.project.invoked-targets –a comma separated list of the targets that have been specified on the command line (the IDE, an task …) when invoking the current project.

ant.java.version –Ant版本(“1.2”,“1.3”,“1.4”,“1.5”,“1.6”)

ant.core.lib –ant.jar文件的绝对路径

3.5 Path-like Structures

你可以用”:”和”;”作为分隔符,指定类似PATH和CLASSPATH的引用。Ant会把分隔符转换为当前系统所用的分隔符。

当需要指定类似路径的值时,可以使用嵌套元素。一般的形式是

<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>

location属性指定了相对于project基目录的一个文件和目录,而path属性接受逗号或分号分隔的一个位置列表。path属性一般用作预定义的路径--其他情况下,应该用多个location属性。

为简洁起见,classpath标签支持自己的path和location属性。所以:

<classpath>
<pathelement path="${classpath}"/>
</classpath>

可以被简写作:

<classpath path="${classpath}"/>

也可通过元素指定路径。构成一个fileset的多个文件加入path-like structure的顺序是未定的。

<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</classpath>

上面的例子构造了一个路径值包括:${classpath}的路径,跟着lib目录下的所有jar文件,接着是classes目录。

如果你想在多个task中使用相同的path-like structure,你可以用元素定义他们(与target同级),然后通过id属性引用。

path-like structure可能包括对另一个path-like structurede的引用(通过嵌套元素):

<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>

前面所提的关于的简洁写法对于也是有效的

<paid="base.path">
<pathelement path="${classpath}"/>
</path>

可th id=”base.path” path=”${classpath}”/>

命令行变量
有些task可接受参数,并将其传递给另一个进程。为了能在变量中包含空格字符,可使用嵌套的arg元素。

value –一个命令行参数;可包含空格字符。
line –空格分隔的命令行参数列表。
file –作为命令行变量的文件名;会被文件的绝对名替代。
path –…

pathref –…

prefix –…

suffix –…

例子
<arg value="-l -a"/>
是一个含有空格的单个的命令行变量,不分“-l”和”-a”
<arg line="-l -a"/>,“-l”和”-a”
是两个空格分隔的命令行变量。
<arg path="/dir;/dir2:\dir3"/>
是一个命令行变量,其值在DOS系统上为\dir;\dir2;\dir3;在Unix系统上为/dir:/dir2:/dir3 。

References
buildFile元素的id属性可用来引用这些元素。如果你需要一遍遍的复制相同的XML代码块,这一属性就很有用--如多次使用结构。

下面的例子:

<project ... >
<target ... > 
<rmic ...> 
<classpath> 
<pathelement location="lib/"/> 
<pathelement path="${java.class.path}/"/> 
<pathelement path="${additional.path}"/> 
</classpath> 
</rmic> 
</target>
<target ... >
<javac ...>
<classpath>
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</classpath>
</javac>
</target>
</project>
可以写成如下形式:
<project ... > 
<path id="project.class.path"> 
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/> 
<pathelement path="${additional.path}"/> 
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path"/>
</rmic>
</target>
<target ... > 
<javac ...>
<classpath refid="project.class.path"/>
</javac>
</target>
</project>

所有使用PatternSets, FileSets 或 path-like structures嵌套元素的task也接受这种类型的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值