Java构建工具-Ant
2015年11月13日
1 目标:批量化工程管理。与C的make,qt的qmake相同的功能。
2 原理:脚本管理。使用xml定义脚本。
3 流程:定义build.xml脚本,由ant执行。
由于Eclipse自带Ant,不用单独下载Ant。
Ant在Eclipse/plugins/目录中。
3.1 创建Java工程:创建Java Application,定义执行文件。
//HelloAnt.java
package lee;
public classHelloAnt {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello,Ant");
}
}
3.2 定义build.xml
<?xmlversion="1.0" encoding="UTF-8" ?>
<projectname="AntDemo1" default="run" basedir=".">
<property name="src"value="src" />
<property name="dest"value="classes" />
<property name="helloant_jar"value="helloant.jar" />
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile"depends="init">
<javac srcdir="${src}"destdir="${dest}" includeantruntime="on" />
</target>
<target name="build"depends="compile">
<jarjarfile="${helloant_jar}" basedir="${dest}" />
</target>
<target name="run"depends="build">
<javaclassname="lee.HelloAnt" classpath="${helloant_jar}" />
</target>
<target name="clean">
<delete dir="${dest}"/>
<deletefile="${helloant_jar}" />
</target>
<target name="rerun"depends="clean,run">
<ant target="clean"/>
<ant target="run" />
</target>
</project>
3.3 执行:build.xml-》右键-》Run As-》Ant Build。
4 方法:build.xml配置
4.1 安装
Eclipse自带的Ant没有帮助文件,可以到官网下载manual或bin压缩包。
在bash中调用ant –version可以验证是否安装成功。
参考:http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html
http://www.cnblogs.com/hoojo/archive/2013/06/14/java_ant_project_target_task_run.html
4.2 组织结构:xml节点定义
4.2.1项目根节点project:代表一个项目,一个xml文件中可以包含多个project。
名称name:工程的名称,可以被任务获取。
默认任务组default:默认执行的target名称。
工程路径basedir:build的根路径。
<projectname="AntDemo1" default="run" basedir=".">
4.2.2变量定义property:以name,value的方式定义一个变量,以${变量名}的方式引用。
<propertyname="dest"value="classes" />
<target name="compile"depends="init">
<javac srcdir="${src}"destdir="${dest}"includeantruntime="on" />
</target>
4.2.3任务组target:指定一组任务。可以指定name和依赖(depends)的target的name。
任务组的name可以被调用和输出。
执行任务组时将先执行依赖任务组。
<target name="compile"depends="init">
<javac srcdir="${src}"destdir="${dest}" includeantruntime="on" />
</target>
4.2.4任务:独立的操作,ant可以执行java中所有的工作。包括编译,运行,打包,部署等。
任务是最基本的执行单元,ant将调用相应的命令行执行。
<target name="run"depends="build">
<javaclassname="lee.HelloAnt" classpath="${helloant_jar}" />
</target>
将调用java命令,效果与手动调用相同:
所有的任务列表参见:/manual/tasklist.html
4.3 常用任务
4.3.1创建目录mkdir:将调用bash的mkdir命令。dir指定要生成的目录。
<mkdir dir="${dest}"/>
4.3.2编译javac:srcdir指定源目录,destdir指定输出目录,includeantruntime指定是否在编译是指定ant路径,默认是yes,推荐使用false(使用系统路径)。
<javac srcdir="${src}"destdir="${dest}" includeantruntime="on" />
参考:http://blog.csdn.net/alongwilliam/article/details/8768502
4.3.3打包jar:jarfile指定输出jar文件名,basedir指定输出目录。
<jarjarfile="${helloant_jar}" basedir="${dest}" />
4.3.4运行java:调用java执行,classname指定java的main类名,classpath指定包含路径/Jar。
<javaclassname="lee.HelloAnt" classpath="${helloant_jar}" />
4.3.5删除文件或目录delete:指定目录dir,指定文件file。
<delete dir="${dest}"/>
<deletefile="${helloant_jar}" />
4.3.6指定其它任务组ant:目录任务组为target。
<anttarget="clean" />
5 示例: