以构建war包为例,如下:
<?xml version="1.0" encoding="UTF-8"?> <!-- 1、定义属性baseDir为根路径(此处该属性的值为javaWebExample),供后续编译或者打成war包使用,使用的是当前Ant文件的路径,例如当前文件的路径为javaWebExample/build.xml 2、设置默认Ant文件的默认执行任务为war(如果该任务名称未定义则会报错) --> <project basedir="." default="war" name="javaWebExample"> <!-- 声明属性供后续使用,开始。。。。 --> <!-- 打成的war包的存放路径,该文件直接将war包打到tomcat的webapps下,方便直接启动tomcat使用 --> <property name="warDist" value="D:/apache-tomcat-8.0.38/webapps"></property> <!-- 定义web内容路径 --> <property name="webContentUrl" value="${basedir}/WebContent"></property> <!-- 定义WEB-INF的路径 --> <property name="webInfUrl" value="${basedir}/WebContent/WEB-INF"></property> <!-- 声明属性供后续使用,结束。。。。 --> <!-- 输出根路径信息 --> <echo>${basedir}</echo> <!-- 定义工程额外添加的jar包路径,一般web工程中第三方包放置在WEB-INF/lib下 --> <path id="build.classpath"> <fileset dir="${webInfUrl}/lib"><include name="**/*.jar"/></fileset> </path> <!-- 定义清空存放class文件的文件夹任务:清空原有的class文件,创建新的build目录用于存放编译之后的class文件 --> <target name="clean"> <delete dir="${basedir}/build" /> <mkdir dir="${basedir}/build" /> </target> <!--定义编译任务:编译任务并且依赖清文件夹任务(clean),创建最新的文件夹用于存放编译后的class文件--> <target name="compile" depends="clean" description="Compilation target"> <!-- 执行编译: 1、如果需要远程调试,则在编译时需要加上debug="true"设置,将调试信息编入代码中,用于调试, 否则eclipse中调试时出现uninstal brekpoint错误导致无法调试 2、设置要编译的源文件(java)的路径,即设置srcDir属性 3、设置存放编译之后的class文件的目录,即设置destDir属性 4、设置编译依赖的classpath路径,依赖于之前定义的类路径属性buid.classpath --> <javac debug="true" destdir="${basedir}/build" srcdir="${basedir}/src" includeantruntime="true"> <classpath refid="build.classpath"></classpath> </javac> </target> <!--定义达成war包的任务:将web应用工程javaWebExample打成war包 1、定义达成war包的名称,即设置name属性为war(name="war") 2、定义该任务依赖于编译任务,即设置depends属性(depends="compile") 3、添加任务的备注(非必须设置),即设置description属性 4、 --> <target name="war" depends="compile" description="将web app打成war包发布"> <war destfile="${warDist}/javaWebExample.war" webxml="${webInfUrl}/web.xml"> <!-- 将非jar和非class文件拷贝到WebContent路径下 --> <fileset dir="${basedir}/WebContent"> <include name="**/**.*" /> <exclude name="**/*.jar"/> <exclude name="**/*.class"/> </fileset > <!-- 将jar文件和对应的class文件拷贝到对应的路径下 --> <lib dir="${basedir}/WebContent/WEB-INF/lib" /> <classes dir="${basedir}/build" /> </war> </target> </project>
其他用法的示例补充
<?xml version="1.0" encoding="UTF-8"?> <project default="main" basedir="." name="forYou"> <property file="${basedir}/src/myProperty.properties"></property> <property name="warDist" value="D:/apache-tomcat-8.0.38/webapps"></property> <property name="webContentUrl" value="${basedir}/WebContent"></property> <property name="webInfUrl" value="${basedir}/WebContent/WEB-INF"></property> <fileset id="sourcefiles" includes="**/*.java" dir="src"></fileset> <echo>sourcefiles = ${toString:sourcefiles} wardist = ${toString:warDist}</echo> <!--默认执行任务 --> <target name="main" depends="compile, compress,use-file,printMessage,createFile" description="Main target"> <echo>Building the .jar file.</echo> </target> <!--判断文件是否存在 --> <target name="use-file" depends="check-user-file" if="${file.exists}"> <echo>judging by if is successful</echo> </target> <target name="check-user-file" unless="file.exists"> <available property="file.exists" file="${basedir}/src/yaya/Test.java"></available> </target> <!--判断文件是否存在 --> <!--读取属性文件信息--> <target name="printMessage" unless="${welcom.info}"><echo>welcome to here!</echo></target> <!--读取属性文件信息--> <!--创建文件--> <target name="createFile"> <mkdir dir="${basedir}/src/app"/> </target> <!--创建文件--> <!--如果文件存在则删除文件--> <target name="check-del-file"> <available property="delFile.exists" file = "${basedir}/src/app/example"></available> </target> <target name="deleteFile" if="${delFile.exists}" depends="check-del-file"> <delete dir="${basedir}/src/app"></delete> <delete dir="${basedir}/src/app" includes="**/*.java"></delete> <delete dir="${basedir}/src/app" includes="**/*.class"></delete> <!-- 将文件输出到给定的文件中 --> <echo append="true" file="${basedir}/src/myProperty.properties">delete file successful!</echo> </target> <!--如果文件存在则删除文件--> <!--文件以及文件夹的拷贝--> <target name="copy"> <copy todir="${basedir}/src/app"> <!--拷贝文件集--> <fileset dir="${basedir}/src/yaya" includes="**/*.java"></fileset> <filterset><filter token="DATE" value="${TODAY}"/></filterset> </copy> <!--copydir src="${basedir}/src/yaya" dest="${basedir}/src/app"></copydir--> </target> <!--文件以及文件夹的拷贝--> <!--编译--> <target name="compile" description="Compilation target"> <javac destdir="${basedir}/src/app" includeantruntime="true"> <src path="${basedir}/src/yaya"></src> <!--src path="${basedir}/src/yaya/anotation"></src--> <!--include name="**/*Test.java"/--> <!--fileset dir="${basedir}/src/yaya" id="sourcefiles"> <include name="**/Test*.java"/> </fileset--> </javac> </target> <!--编译--> <!--打jar包--> <target name="compress" depends="compile" description="Compression target"> <!--将编译之后的class文件打成jar 到src/app目录下--> <jar destfile="${basedir}/src/app/app.jar" basedir="${basedir}/src/yaya" includes="**/*.class" /> <!--将未编译的java文件打成jar 到src目录下--> <jar destfile="${basedir}/src/app1.jar"> <fileset dir="${basedir}/src/yaya"> <include name="**/*.java"/> </fileset> </jar> </target> <!--打jar包--> </project>
如果不正确之处,请指正。