ant property 总结
来源:互联网 发布:ipad 笔记软件 知乎 编辑:程序博客网 时间:2024/05/29 15:01
特点
大小写敏感;
不可改变,先到先得,谁先设定,之后的都不能改变。
使用Ant运行tomcat
Ant使用<exec>任务运行本地程序,先看一个例子:
<?xml version="1.0"?><project name="project" default="run"> <target name="run"> <exec executable="cmd"> <arg value="/C a.bat"/> </exec> </target></project>
a.bat
@echo offecho Hello >> a.txt
运行完后,会在根目录生成a.txt文件,里面内容为Hello
下面我们来运行tomcat
<?xml version="1.0"?><project name="project" default="tomcat-start"> <property name="tomcat.dir" value="c:/Tomcat5"></property> <target name="tomcat-start"> <exec dir="${tomcat.dir}/bin" executable="cmd"> <env key="CATALINA_HOME" path="${tomcat.dir}"/> <arg value="/C startup.bat"/> </exec> </target>
<target name="tomcat-stop"> <exec dir="${tomcat.dir}/bin" executable="cmd"> <env key="CATALINA_HOME" path="${tomcat.dir}"/> <arg value="/c shutdown.bat"/> </exec> </target></project>
成功!!
怎样设置
1 、设置 name 和 value 属性值,比如: <property name="srcdir" value="${basedir}/src"/>
2 、 设置 name 和 refid 属性值,比如: <property name="srcpath" refid="dao.compile.classpath"/> ,其中dao.compile.classpath 在别的地方定义。
3 、设置 name 和 location 属性值,比如: <property name="srcdir" location="src"/> ,即将 srcdir 的值设 置为:当前项目根目录的 /src 目录。
4 、设置 file 属性值,比如: <property file="build.properties"/> , 导入 build.properties 属性文件中的属性值
5 、设置 resource 属性值,比如: <propety resource="build.properties"/>, 导入 build.properties 属性文件中的属性值
6 、设置 url 属性值,比如: <property url="http://www.blogjava.net/wiflish/build.properties"/>, 导入http://www.blogjava.net/wiflish/build.properties 属性文件中的属性值。
7 、设置环境变量,比如: <property environment="env"/> ,设置系统的环境变量为前缀 env.
<property name="tomcat.home" value="${env.CATALINA_HOME}"/> 将系统的 tomcat 安装目录设置到 tomcat.home 属性中。
从特性文件.propeties中载入特性:
特性文件格式:name=value.如build.debug=off.
在构建文件中增加任务:
<target name="override">
<property file="build.properties"/>
<property name="build.debug" value="on" />
<echo message="debugging is turned ${build.debug}" />
</target>
内置属性
Ant’s built-in properties:
basedir
The absolute path of the project’s basedir.
ant.file
The absolute path of the buildfile.
ant.version
The version of Ant.
ant.project.name
The name of the project that is currently executing.
ant.project.default-target
The name of the currently executing project’s default target.
ant.project.invoked-targets
A comma separated list of the targets that have been specified on the command line when invoking the current.
ant.java.version
The JVM version Ant detected.
ant.core.lib
The absolute path of the ant.jar file.
System properties
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
用法
${key_name},如:${os.name},它将得到当前操作系统的名称。
需注意
1. 内置属性basedir
-- 不需要定义就可以直接使用,${basedir},得到当前工程的绝对路径
-- 当在<project>标签的basedir属性中指定basedir时,之后工程中出现的所有相对路径都是相对于这个basedir所指向的路径,且${basedir}的值也将变为<project>标签中的basedir属性所指定的值。
2. property的不变性在使用<available><ant><antcall>时会被打破
3. 可以在命令行通过-DpropertyName=propertyValue的方式指定property,注意,-D于propertyName之间没有空格,使用这种方式指定的属性最先被赋值,它是在执行build文件之前就已经赋值了的。
Q&A
How can I do something like <property name="prop" value="${${anotherprop}}"/>
(double expanding the property)?
Without any external help you can not.
With <script/>, which needs external libraries, you can do
- <script language="javascript">
- propname = project.getProperty("anotherprop");
- project.setNewProperty("prop", propname);
- </script>
With AntContrib (external task library) you can do <propertycopy name="prop" from="${anotherprop}"/>
.
With Ant 1.6 you can simulate the AntContribs <propertycopy> and avoid the need of an external library:
- <macrodef name="propertycopy">
- <attribute name="name"/>
- <attribute name="from"/>
- <sequential>
- <property name="@{name}" value="${@{from}}"/>
- </sequential>
- </macrodef>
With the 'props' antlib (external, but also from Ant) you could do the dereferencing with ${${anotherprop}
- not just in the property task - instead everywhere in your buildfile (after registering the required property helper).
- <propertyhelper>
- <props:nested />
- </propertyhelper>
- <property name="foo" value="foo.value" />
- <property name="var" value="foo" />
- <echo> ${${var}} = foo.value </echo>
With Flaka (external Ant Plugin) you could do the dereferencing with #{${anotherprop}}
- not just in flaka tasks, but all tasks after installing flaka's property handler.
- <project xmlns:fl="antlib:it.haefelinger.flaka">
- <fl:install-property-handler/>
- <property name="foo" value="foo.value"/>
- <property name="var" value="foo" />
- <property name="buildtype" value="test"/>
- <property name="appserv_test" value="//testserver"/>
- <echo>
- #{${var}} = foo.value
- <!-- nested property -->
- #{appserv_${buildtype}}
- </echo>
- </project>
- 【ant】ant property 总结
- ant property 总结
- ant property总结
- ant property 总结
- ant system property
- ant的property使用
- @property总结
- ant property标签粗解
- Ant property标签粗解
- Ant 总结
- 总结Ant
- ant实用手册(四)——定义property
- 学ant(1)——property
- [Ant][StartWithAnt] 第三章 特性property
- property—ant入门指南(5)
- ANT property三种使用方式
- ant编译重设property的值
- [Ant][StartWithAnt] 第三章 特性property
- JDK5.0新特性--可变参数
- 如何快速删除文件
- 算法设计与分析
- android中Touch事件的处理逻辑
- android学习笔记19:ListView
- ant property 总结
- Android模拟器不能启动
- 设置PowerDesigner 字体
- sql表的连接查询详解
- php将二维关联数组转换成字符串
- 百度手写输入
- C#中Split用法~
- js字符编码函数区别分析
- busybox1.19.3编译错误解决办法