ant的内建特性
ant有一些内建的特性如:
ant.file-->构建文件如build.xml文件所在的路径
ant.home->ant的根路径
ant.java.version->java版本
ant.project.name->当前project的名字,在build.xml的开头指定
ant.version->ant版本
basedir->project的根路径,在build.xml的开头指定
<!--ant的内建属性-->
<target name="echo">
<echo message="ant.file=${ant.file}"/>
<echo message="ant.file=${ant.home}"/>
<echo message="ant.file=${ant.java.version}"/>
<echo message="ant.file=${ant.project.name}"/>
<echo message="ant.file=${ant.version}"/>
<echo message="ant.file=${basedir}"/>
</target>
所有Jvm系统的特性都隐式的成为ant特性,并允许用户对一些重要信息诸如用户的主目录以及用户名称等进行修改。
如:
<!--JVM系统属性-->
<target name="userInfo">
<echo message="user.name = ${user.name}"/>
<echo message="user.home = ${user.home}"/>
<echo message="java.home = ${java.home}"/>
</target>
用户自己设置特性
最常用的自定义特性有几种:
1、name/value特性
其格式为<property name="..." value="..."/>
引用相对路径的特性最好使用location变量设置,如:
<property name="builddir" location=${build.dir} />
2、从文件中载入特性集
假设我们已经有一个文件名为build.properties
<property file="build.properties"/>
3、载入环境变量
另一个重要的property变量允许将环境变量作为特性。需要加入类似于下面这句话
<property environment="env" />
env表示环境变量的前缀,这个可以自己设置值。
那么在引用环境变量的时候输入${env.Path} ${env.CLASSPATH},注意环境变量是大小写敏感的。
4、通过ant命令 ant -DXXX=XXX.
如运行ant -Durl=http://localhost:9515 就可以传给下面语句中的url。
<echo message="url=${url}"/>
5、从xml文件中载入特性。
其格式为<xmlproperty file="web.xml"/>
例如:
web.xml
<?xml version="1.0"?>
<person name="Jarvi">
<age>26</age>
</person>
build.xml
<target name="xmlimport">
<xmlproperty file="web.xml" collapseAttributes="true"/>
<echo message="person.name,person=${person.name},${person.age}"/>
</target>
也可以通过import的方法来输入xml文件,此时xml文件的内容就像宏定义一样被嵌入。被import的xml文件必须是一个构建文件,以构建文件的格式书写。
注意:特性值一旦设定,则无论在构建文件中还是在命令行里都不能修改它的值。最先设值者设值时就固定了它的值。
例如下面这段代码
在文件build.properties中有这样一句话
build.debug=off
在构建文件中
<property file="build.properties"/>
<property name="build.debug" value="on"/>
<echo message="build.debug = ${build.debug}" />
其输出的结果是build.debug = off。
这是因为特性build.debug首先在build.properties中设定了。
我们也可以通过在命令行中首先输入一些特性来设定特性值,这样将会覆盖构建文件中所设定的特性值。
附:
build.xml里面内容:
<?xml version="1.0" encoding="GB2312" ?>
<project name="test" default="echo" basedir=".">
<!--ant的内建属性-->
<target name="echo">
<echo message="ant.file=${ant.file}"/>
<echo message="ant.file=${ant.home}"/>
<echo message="ant.file=${ant.java.version}"/>
<echo message="ant.file=${ant.project.name}"/>
<echo message="ant.file=${ant.version}"/>
<echo message="ant.file=${basedir}"/>
</target>
<!--JVM系统属性-->
<target name="userInfo">
<echo message="user.name = ${user.name}"/>
<echo message="user.home = ${user.home}"/>
<echo message="java.home = ${java.home}"/>
</target>
<!-- 用户自己设置属性方法 -->
<target name="getProperty">
<!--name/value属性-->
<property name="build.dir" value="/build"/>
<echo message="build.dir = ${build.dir}"/>
<!--通过属性文件载入-->
<property file="build.properties"/>
<echo message="language =${language}"/>
<!--得到环境变量-->
<property environment="env" />
<echo message="env.Path=${env.Path}"/>
<!--通过—Durl载入 -->
<echo message="url=${url}"/>
<!--通过xml文件载入-->
<xmlproperty file="web.xml" collapseAttributes="true"/>
<echo message="person.name,person=${person.name},${person.age}"/>
</project>
web.xml里面内容:
<?xml version="1.0"?>
<person name="Jarvi">
<age>26</age>
</person>
build.properties里面内容:
language=EN