ant学习笔记

ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

各目录的含义:bin,etd,lib,manual

配置环境变量ANT_HOME和Path

lib的存放:${user.home}/.ant/lib,或者ant的lib

命令:
help,version,quiet(不输出echo信息),debug(显示调试信息),emacs(对日志消息进行格式化),logfile
buildfile(默认为build.xml),find(逐级往上查找文件),propertyfile(加载所有属性配置文件)

<project default=”all”>
<property name=”pro_a” value=”a value” />
<property name=”pro_b” value=”b value” />
<property file=”build.properties”/>
<path id=”rt.path”>
<pathelement location=”${java.home}/jre/lib/rt.jar” />
</path>
<target name=”all”>
<javac srcdir=”.”>
<classpath refid=”a.path” />
</javac>
<echo message=”The base dir is: ${basedir}” />
</target>
</project>

build文件的元素:
project
name:项目名称
defualt:默认执行的target
target:
depends:target之间的以来关系
if:成立则执行
unless:不成立则执行
properties:
file:引入外部属性文件
copy:
<copy file=”old.txt” tofile=”new.txt”/>
<copy todir=”../dest_dir”>
<fileset dir=”src_dir”/>
</copy>
<copy file=”src.txt” todir=”c:/base”/>
delete:
<delete file=”/res/image/cat.jpg”/>
<delete dir=”/res/image”/>
<delete includeEmptyDirs=”true”>
<fileset dir=”.” includes=”**/*.jar”/>
</delete>
mkdir:
<mkdir dir=”/home/philander/build/classes”/>
move:
<move file=”sourcefile” tofile=”destfile”/>
<move file=”sourcefile” todir=”movedir”/>
<move todir=”newdir”>
<fileset dir=”olddir”/>
</move>
echo:
<echo message=”ant message” file=”/logs/ant.log” append=”true”>
jar打包:
<jar destfile=”${webRoot}/${ash_jar}” level=”9″ compress=”true” encoding=”utf-8″ basedir=”${dest}”>
<manifest>
<attribute name=”Implementation-Version” value=”Version: 2.2″/>
</manifest>
</jar>
zip:
<zip basedir=”${basedir}\classes” zipfile=”temp\output.zip”/>
gzip:
<gzip src=”classes\**\*.class” zipfile=”output.class.gz”/>
<unzip src=”output.class.gz” dest=”extractDir”/>
war打包:
<war destfile=”${webRoot}/ash.war” basedir=”${basedir}/web” webxml=”${basedir}/web/WEB-INF/web.xml”>
<exclude name=”WEB-INF/classes/**”/>
<exclude name=”WEB-INF/lib/**”/>
<exclude name=”WEB-INF/work/_jsp/**”/>
<lib dir=”${lib.dir}” includes=”**/*.jar, **/*.so, **/*.dll”>
<exclude name=”${webRoot}\${helloworld_jar}”/>
</lib>
<lib file=”${webRoot}/${helloworld_jar}”/>
<classes dir=”${dest}” includes=”**/*.xml, **/*.properites, **/*.xsd”> </classes>
</war>

javac 标签节点元素
该标签用于编译一个或一组java文件,其属性如下。
● srcdir表示源程序的目录。
● destdir表示class文件的输出目录。
● include表示被编译的文件的模式。
● excludes表示被排除的文件的模式。
● classpath表示所使用的类路径。
● debug表示包含的调试信息。
● optimize表示是否使用优化。
● verbose 表示提供详细的输出信息。
● fileonerror表示当碰到错误就自动停止。
java 标签节点元素
该标签用来执行编译生成的.class文件,其属性如下。
● classname 表示将执行的类名。
● jar表示包含该类的JAR文件名。
● classpath所表示用到的类路径。
● fork表示在一个新的虚拟机中运行该类。
● failonerror表示当出现错误时自动停止。
● output 表示输出文件。
● append表示追加或者覆盖默认文件。
arg 数据参数元素
由Ant构建文件调用的程序,可以通过<arg>元素向其传递命令行参数,如apply,exec和java任务均可接受嵌套<arg>元素,可以为各自的过程调用指定参数。以下是<arg>的所有属性。
● values 是一个命令参数。如果参数中有空格,但又想将它作为单独一个值,则使用此属性。
● file 表示一个参数的文件名。在构建文件中,此文件名相对于当前的工作目录。
● line 表示用空格分隔的多个参数列表。
● 表示路径,一个作为单个命令行变量的path-like的字符串;或作为分隔符,Ant会将其转变为特定平台的分隔符。
● pathref 引用的path(使用path元素节点定义path)的id
● prefix 前缀
● suffix 后缀
ervironment环境变量:file,path,value,key
filelist 文件集合列表:<filelist id=”docfiles” dir=”${doc.src}” files=”foo.xml,bar.xml”/>
fileset 文件类型:dir,casesensitive,excludes,excludesfile,includes,includesfile
patternset 类型:模式的分组
filterset 类型:过滤器分组,begintoken,endtoken
path:一个类路径

双$$可以转义成$

ant内置变量
basedir the absolute path of the project’s basedir (as set with the basedir attribute of <project>).
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.java.version the JVM version Ant detected;
ant.home home directory of Ant

 

Author: bkdwei