我们编译和打包一个java工程需要用javac、jar、java命令,我们现在举个使用ant打包和运行java项目的例子,在写之前需要了解ant对应的javac、jar、java对应的任务
javac任务
用于编译一个或一组java文件,属性如下:
srcdir表示源程序的目录。
destdir表示class文件的输出目录。
includes表示被编译的文件。
excludes表示被排除的文件。
classpath表示所使用的类路径。
debug表示包含的调试信息。
optimize表示是否使用优化。
verbose 表示提供详细的输出信息。
fileonerror表示当碰到错误就自动停止。
deprecation表示的是提供详细的废弃错误信息,以表明那些类和调用时废弃的
excludes属性表示的是在源码目录srcdir中只编译除excludes之外的源码
用法如图:
includes属性表示的是在源码目录srcdir中只编译includes指定源码,其他的不编译
用法如图:
javadoc任务
用来生成html帮助文档
生成文档如下:
jar任务
用来生成一个JAR文件,属性如下
destfile表示JAR文件名
basedir表示被归档的文件目录
includes表示被归档的文件
excludes表示被排除的文件
java任务
用来执行编译生成的.class文件,其属性如下
classname 表示将执行的类名
jar表示包含该类的JAR文件名
classpath所表示用到的类路径
fork表示在一个新的虚拟机中运行该类
failonerror表示当出现错误时自动停止
output 表示输出文件
append表示追加或者覆盖默认文件。
执行的参数用嵌套的<arg>
完整的build.xml内容为:
<?xml version="1.0" encoding="UTF-8"?> <!--测试使用ant打包java程序,并运行--> <project basedir="." default="runJava" name="jarTest"> <!--定义打包项目基本信息--> <property name="project_name" value="测试ant打包" /> <property name="version" value="1.0" /> <property name="date" value="2013-05-04" /> <property name="author" value="流浪鱼" /> <!--定义路径--> <property name="src.dir" value="src" /> <property name="build.dest" value="${basedir}/build_ant/dest" /> <property name="build.dest.classes" value="${basedir}/build_ant/dest/classes" /> <property name="build.dest.jar" value="${basedir}/build_ant/dest/jar" /> <property name="jar.name" value="test.jar" /> <target name="clear"> <description>删除ant构建时生成文件夹</description> <delete dir="${build.dest}"/> </target> <target name="init" depends="clear"> <description>创建构建需要文件夹</description> <echo message="---${project_name} ${version} [${date}] by [${author}]---" /> <mkdir dir="${build.dest}" /> <mkdir dir="${build.dest.classes}" /> <mkdir dir="${build.dest.jar}" /> </target> <target name="compile" depends="init"> <description>编译java程序</description> <javac srcdir="${src.dir}" destdir="${build.dest.classes}" encoding="UTF-8"/> </target> <target name="buildJar" depends="compile"> <description>打包java程序</description> <!--没有指定主方法 <jar destfile="${build.dest.jar}/${jar.name}" basedir="${build.dest.classes}" /> --> <jar destfile="${build.dest.jar}/${jar.name}" basedir="${build.dest.classes}" > <manifest> <attribute name="Main-class" value="Test" /> </manifest> </jar> </target> <!-- <target name="runJava" depends="buildJar"> <description>运行java程序</description> <java classname="com.test.Test" classpath="${build.dest.jar}/${jar.name}"/> </target> --> <target name="runJava" depends="buildJar"> <description>运行java程序</description> <java classname="com.test.Test" > <classpath> <!-- 使用编译类后的class所在文件夹 <pathelement path="${build.dest.classes}" /> --> <!--使用jar文件--> <pathelement path="${build.dest.jar}/${jar.name}" /> </classpath> </java> </target> </project>
测试项目见附件