1、ant执行的文件默认的事build.xml,当然也可以执行指定的文件 ant -f hello.xml.
2、build.xml文件也是一个xml文件需要有xml文件头 版本信息和编码方式,build.xml文件中只能有一个project标签也就是根标签,project中可以有多个target任务,project标签中有default属性表示执行build文件时第一个执行的target任务。
3、target任务中可以进行一系列的操作,target之间也可以设置依赖关系,比如targetB执行依赖于targetA可以再B中声明depends属性及depends="targetA",这样执行时就会先执行A之后再执行B。
如下例子:
<?xml version="1.0" encoding="UTF-8"?>
<project default="secend">
<targetname="init">
<mkdir dir="helloworld"/>
</target>
<target name="secend"depends="init">
<deletedir="helloworld"/>
</target>
</project>
该build执行时会去执行secend执行时发现依赖于init 所以就回去执行init,之后再执行secend。
4、定义和使用属性<property name="hello" value="welcome"/> 使用时可以${hello}方式使用。
5、location属性,常用来表示引用文件的路径,且location表示的当前build的相对路径且“\”、“/”都可以转换成当前平台的正确格式。
<property name="world"location="fjia/sean/hellow">
6、定义依赖关系,首先会执行被依赖的对象,且ant中的target只会执行一次。
<?xml version="1.0" encoding="UTF-8"?>
<project default="D">
<!-- 定义属性-->
<propertyname="hello" value="welcome" />
<!-- location属性可以定义相对于该build文件的根目录的路径且“\”、“/”都会被转成当前平台的正确格式-->
<!--经常被用于引用资源文件的路径-->
<propertyname="world" location="fjia/sean/hellow">
<targetname="init">
<mkdir dir="${hello}/helloworld"/>
</target>
<targetname="secend" depends="init">
<delete dir="${hello}"/>
</target>
<targetname="A"/>
<targetname="B" depends="A"/>
<targetname="C" depends="A,B"/>
<targetname="D" depends="C" />
</project>
7、project标签中属性basedir表示当前根目录,一般设置<project name="HzGasManager" basedir="." default="main">
8、javac编译java文件命令:<javac srcdir="src" destdir="${compile}"></javac> 表示编译srcdir文件夹中所以java文件,将编译的class文件放置到destdir中。
9、jar命令打包指定目录为jar文件,destfile指生成的jar文件存放目录和文件名,basedir指要打包的文件目录<jardestfile="${dist}/server.jar" basedir="${compile}" />
其中jar命令内部也可设置<manifest>定义jar包的清单文件如下:
<targetname="dist" depends="init">
<!-- jar名打包指定目录为jar文件,destfile指生成的jar文件存放目录和文件名,basedir指要打包的文件目录 -->
<jardestfile="${dist}/server.jar" basedir="${compile}" >
<!-- 设置打的jar包的清单文件 -->
<manifest>
<attribute name="Build-By"value="${user.name}"/><!-- 指定打包者姓名-->
<attribute name="Main-Class"value="org.soap.service.MyServer"/><!-- 指定这个包的入口函数 -->
</manifest>
</jar>
</target>
10、mkdir、delete创建文件夹和删除,使用delete时如果设置的dir就删文件夹及其内部的文件,如果是file就删除指定文件。
<deletedir="${dist}"></delete>
<deletefile="${dist}/server.jar"></delete>
11、使用时间戳
使用方法如下:
<tstamp></tstamp>
<jar destfile="${dist}/server${DSTAMP}.jar"basedir="${compile}" >
先声明后使用
也可以设置固定格式再使用
<!-- 设置日期格式 -->
<tstamp>
<formatproperty="TODAY_UK" pattern="dd-MM-yyyy"locale="en" />
</tstamp>
<tstamp>
<formatproperty="TODAY_CN" pattern="MM-dd-yyyy" locale="zh"/>
</tstamp>
<tstamp>
<formatproperty="touch.time" pattern="MM-dd-yyyy hh:mm aa"offset="-5" unit="hour" />
</tstamp>
<tstamp>
<formatproperty="datestamp" pattern="yyyy-MM-dd' 'HH:mm:ss" />
</tstamp>
使用 <jar destfile="${dist}/server${TODAY_UK}.jar"basedir="${compile}" >
12、copy、move复制文件到指定目录或移动文件到指定目录
<targetname="copyFile">
<!-- 拷贝文件,tofile可以修改文件名到指定目录,todir直接拷贝到指定目录 -->
<copyfile="src/org/soap/service/MyServer.java" tofile="${dist}/CopyServer.java"></copy>
<copyfile="src/org/soap/service/MyServer.java"todir="${dist}"></copy>
<!-- 移动文件,和copy类似只是将文件移动到指定位置 -->
<movefile="src/org/soap/service/MyServer.java"todir="${dist}"></move>
</target>
带有模式匹配的拷贝文件
<!-- 带有模式匹配的拷贝文件,表示将src目录下的所有子目录中的.java文件拷贝到dist目录中-->
<copy todir="${dist}">
<filesetdir="src">
<includename="**/*.java"/>
</fileset>
</copy>
13、打印消息到控制台中
<echo message="***********开始编译***********" />
14、zip、unzip命令用来压缩文件和解压缩文件
<!--将dist目录的内容压缩成compile文件夹中的server。zip文件 -->
<zip destfile="${compile}/server.zip"basedir="${dist}"></zip>
<!-- 解压文件到指目录将src中的文件解压缩到dest中-->
<unzip dest="${dist}"src="${compile}/server.zip"></unzip>
15、模式匹配,可以对目录进行模式匹配
例如,模式“src*/*.java”将匹配带src前缀的任何目录中的所有java文件。
“**”匹配任意数量的目录,例如“**/*.java”将匹配当前结构(所有子目录)下的所有java文件。
“*/*.java”匹配当前目录下的所有java文件。