Ant入门
来源:互联网 发布:淘宝上卖自己做的熟食 编辑:程序博客网 时间:2024/06/05 14:23
1.Ant的安装
- 在Apache官网下载最新Ant
- 环境变量设置:
系统变量:ANT_HOME=d:\ant_home\apache-ant-1.70在
用户变量:中加入Ant 的bin 目录:path=%ANT_HOME%\bin - 测试ant是否安装成功:进入cmd运行Ant.出现如下提示,说明安装成功.
E:\srcgen\webwork>ant
Buildfile: build.xml does not exist!
Build failed
2.Ant入门
Ant的构建文件类型是xml,默认读取的是build.xml文件,如果需要指定文件,可以用如下命令ant –f hello.xml或者ant –file hello.xml或者ant –buildfile hello.xml。下面来一段简单的构建文档。
<?xml version="1.0" encoding="UTF-8" ?><project name="HelloWorld" default="run" basedir="."> <property name="src" value="src"/> <target name="init"> <echo message="Hello,init"/> </target> <target name="run" depends="init"> <echo message="Hello,run"/> </target> <target name="testif" if="src"> <echo message="Hello,if"/> </target> <target name="testunless" unless="src"> <echo message="Hello,unless"/> </target></project>
打开cmd,进入文件所在目录,输入ant run,回车。输出如下图:
这里run代表了一个任务,而这个任务又依赖了另外一个任务,所以会先执行init任务。如果不知道target里面定义了哪些可以执行的命令,输入ant -projecthelp会提示出这些命令。
Ant的关键元素project、target、property。
1.project元素
project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。接下来向读者展示一下project元素的各属性。
- name属性:用于指定project元素的名称。
- default属性:用于指定project默认执行时所执行的target的名称。例如,本例输入ant也会输出相应结果。
- basedir属性:用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的所在目录作为基准目录,即’.’。
2.target元素
它为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。
- name属性:指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target。
- depends属性:用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。
- if属性:用于验证指定的属性是否存在,若不存在,所在target将不会被执行。
- unless属性:与if属性相反。
- description属性:该属性是关于target功能的简短描述和说明。
3.property元素
该元素就是参数的定义,也可以引用文件,引用方法与properties文件完全一样。
all.properties的内容:
src1=D:\\study\\ant\\src1src2=D:\\study\\ant\\src2src3=D:\\study\\ant\\src3
build.xml中的引用:
<property file="all.properties" /><target name="run"> <ant dir="${src1}" target="run" /> <ant dir="${src2}" target="run" /> <ant dir="${src3}" target="run" /></target>
Ant还提供了一些它自己的内置属性:
basedir:project基目录的绝对路径;
ant.file:buildfile的绝对路径,即”${basedir}/build.xml”;
ant.version:Ant的版本,在本文中,值为1.9.1;
ant.project.name:当前指定的project的名字,即project的name属性的值;
ant.java.version:Ant检测到的JDK的版本,在上例运行结果中可看到为1.7。
3.Ant中常用task
- 输出信息
<echo message=”xxx” />或者<echo>yyyy</echo>
- 引入一个xml 文件
<import file="../build2.xml"/>
- 拷贝
<!-- 拷贝文件 --> <copy file="myfile.txt" tofile="mycopy.txt"/><!-- 拷贝一个文件到指定目录 --><copy file="myfile.txt" todir="../some/other/dir"/><!-- 拷贝一个目录集合到指定目录 --><copy todir="../dest/dir"> <fileset dir="src_dir" excludes="**/*.java" includes="**/Test.java"/></copy><!-- 拷贝一个目录集合到指定目录并且将文件重命名为.bak --><copy todir="../backup/dir"> <fileset dir="src_dir"/> <globmapper from="*" to="*.bak"/></copy><!-- 拷贝并替换@TITLE@为Foo Bar --><copy todir="../backup/dir"> <fileset dir="src_dir"/> <filterset> <filter token="TITLE" value="Foo Bar"/> </filterset></copy>
copydir和copyfile与copy具有同样的功能,老版本中的任务,不推荐使用。
<copyfile src="test.java" dest="subdir/test.java"/><copydir src="../resources" dest="${dist}" includes="**/*.java"/>
- 删除
<!-- 删除文件 --><delete file="/lib/ant.jar"/><!-- 删除目录 --><delete dir="lib"/><!-- 删除指定文件 --><delete> <fileset dir="." includes="**/*.bak"/></delete><!-- 删除svn文件,svn文件默认是excludes的 --><delete defaultexcludes="false"> <fileset dir="src" includes="**/.svn"/></delete>
- 剪切
<move todir="some/new/dir"> <fileset dir="my/src/dir"> <include name="**/*.jar"/> <exclude name="**/ant.jar"/> </fileset></move>
- 重命名
<rename src="foo.jar" dest="ant-${version}.jar"/>
- 替换
<!-- 替换的三种方式:1.直接在属性里面定义好value;2.在replaceFile中定义value;3.利用properties文件中的键值对来定义参数 --><replace file="configure.sh" value="defaultvalue" propertyFile="source/name.properties"> <replacefilter token="token1"/> <replacefilter token="token2" value="value2"/> <replacefilter token="token3" property="property.key"/></replace>
- ant 入门
- Ant入门
- Ant入门
- ant 入门
- ant入门
- Ant入门
- ant入门
- Ant入门
- Ant入门
- Ant 入门
- Ant入门
- ant入门
- Ant入门
- Ant入门
- ant 入门
- ant入门
- ant 入门
- Ant入门
- 网络七层 以及iOS开发中的get请求 post请求
- retrofit--------样例代码
- 《机器学习实战》——回归
- 不同渲染路径下Pass执行规则总结
- 43. Multiply Strings
- Ant入门
- Mule ESB 入门,最简单的Hello实例
- 排序算法之导论
- [CodeForces 552C]Vanya and Scales[math]
- linux c程序中获取shell脚本输出的实现方法
- 入住CSDN
- 关于AnyChat录像解决方案的几张原理图
- Java单例模式
- Mongodb集群重新登陆和删除原先的数据库(腾出空间)