如今咱们已经了解如何定义属性、依赖关系以及如何运行ant,接下来咱们将学习怎样使用ant编译java源代码并生成jar文件。java
编译源代码ide
因为Ant的主要目标就是生成java应用程序,它内置了javac任务来调用java的编译器。此任务通常定义以下学习
<javac srcdir=”src” destdir=“build”/>ui
Ant会寻找src目录下全部以.java为扩展名的全部文件,并对他们调用javac编译器,从而在build目录下生成class文件。Javac任务不只会编译须要编译的源文件,若是某个类文件已经存在,可是对应的源代码文件自从该类文件生成后没有改过,则不会从新编译此源代码文件。spa
建立jar文件code
在编译java源文件以后,一般会将其归档打包为一个jar文件。Jar任务一般以下定义xml
<jar destfile=”wufengtinghai.alm.jar” basedir=”build”/>blog
此任务将建立一个wufengtinghai.alm.jar文件,并将build下的全部文件打包到此jar文件中。若是没有指定清单文件,Ant则会生成一个基本的清单文件。Manifest属性容许制定一个清单文件,同时也可使用manifest任务定义清单文件。ip
<jar destfile="wufengtinghai.alm.jar" basedir="classes"> <manifest> <attribute name="Built-By" value="${user.name}"/> <attribute name="project" value="wufengtinghai.alm"/> </manifest> </jar>
生成时间戳 get
在生成环境中使用当前时间和日期,能够以此种方式标记某个生成什么时候生成输出的。Ant提供了简单易用的tstamp任务能够完成这个功能。这个任务一般在生成过程开始时调用。Tstamp不产生任何的输出;相反,它会根据当前系统时间和日期设置Ant的相关属性。
DSTAMP:设置为当前日期,默认格式为yyymmdd,例如20150606
TSTAMP:设置为当前时间,默认格式为hhmm,例如1020
TODAY:设置为当前日期,带完整的月份,例如2015年6月6日
那咱们能够将咱们的jar文件定义为以下
<jar destfile="lucene-${DSTAMP}.jar" basedir="classes"/>
最终咱们的生成文件autobuildjava.xml以下
<?xml version="1.0"?> <project default="dist" name="autobuildjava" basedir="../"> <description>A simple auto build Java project</description> <property name="srcDir" location="src" /> <property name="buildDir" location="build" /> <property name="distDir" location="dist" /> <target name="init"> <tstamp /> <mkdir dir="${buildDir}" /> <mkdir dir="${distDir}" /> </target> <target name="compile" depends="init"> <javac srcdir="${srcDir}" destdir="${buildDir}" /> </target> <target name="dist" depends="compile"> <jar destfile="${distDir}/wufengtinghai.alm-${DSTAMP}.jar" basedir="${buildDir}"> <manifest> <attribute name="Built-By" value="${user.name}" /> <attribute name="project" value="wufengtinghai.alm" /> </manifest> </jar> </target> <target name="clean"> <delete dir="${buildDir}" /> <delete dir="${distDir}" /> </target> </project>
执行生成控制台输出以下
生成的jar文件和清单文件以下