一个完整的JENKINS下的ANT BUILD.XML文件
<?
xml version="1.0" encoding="UTF-8"
?>
< project name ="genwar" default ="all" basedir ="." >
< description > - Generate war file - </ description >
< property environment ="env" />
< property name ="debuglevel" value ="source,lines,vars" />
< property name ="target" value ="1.6" />
< property name ="source" value ="1.6" />
< property name ="output.dir" location ="." />
< property name ="output.file" value ="new_cos.war" />
< property name ="project.build" location ="./build" />
< property name ="project.src" location ="./src" />
< property name ="project.web" location ="../web" />
< property name ="project.lib" location ="./lib" />
< property name ="project.res" location ="./res" />
< property name ="project.svc" location ="./svc" />
< property name ="project.war" location ="${project.build}/${output.file}" />
< property name ="tmp" location ="${project.build}/tmp" />
< property name ="tmp.src" location ="${tmp}/src" />
< property name ="tmp.lib" location ="${project.web}/WEB-INF/lib" />
< property name ="tmp.bin" location ="${tmp}/bin" />
< property name ="tmp.web" location ="${tmp}/web" />
< property name ="tmp.classes" location ="${tmp}/classes" />
< property name ="checkstyle.dir" location ="./ant-task/checkstyle" />
< property name ="findbugs.dir" location ="./ant-task/findbugs/home" />
< property name ="findbugs.report.dir" location ="./ant-task/findbugs" />
< property name ="junit.reports.dir" value ="./ant-task/junit/reports" />
< property name ="junit.class.dir" value ="./ant-task/junit/bin" />
< property name ="junit.test.src" location ="./test/java" />
< property name ="junit.test.resources" location ="./test/resources" />
< path id ="javaclass.path" >
< pathelement path ="${env.classpath}" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/servlet-api.jar" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/jsp-api.jar" />
< fileset dir ="${tmp.lib}" includes ="*.jar" />
<!-- <fileset dir="${project.lib}" includes="*.jar" /> -->
</ path >
< path id ="findbugs.path" >
< fileset dir ="${findbugs.dir}" includes ="**/*.jar" />
</ path >
< target name ="clean" >
< delete file ="${output.dir}/${output.file}" failonerror ="false" />
< delete dir ="${project.build}" failonerror ="false" />
< mkdir dir ="${project.build}" />
</ target >
< target name ="all" depends ="clean,buildwar" />
< target name ="initdir" >
< echo message ="Init directories " />
< delete dir ="${tmp}" failonerror ="false" />
< mkdir dir ="${tmp}" />
< mkdir dir ="${tmp.src}" />
< copy todir ="${tmp.src}" >
< fileset dir ="${project.src}" excludes ="**/.svn/**" />
</ copy >
< mkdir dir ="${tmp.lib}" />
<!--
<copy todir="${tmp.lib}">
<fileset dir="${project.web}/WEB-INF/lib" includes="*.jar" />
</copy>
-->
< mkdir dir ="${tmp.bin}" />
< mkdir dir ="${tmp.web}/WEB-INF/lib" />
< delete dir ="${tmp.web}/WEB-INF/classes" failonerror ="false" />
< mkdir dir ="${tmp.web}/WEB-INF/classes" />
</ target >
< target name ="compilejava" depends ="initdir" >
< echo message ="Compiling java code " />
< javac debug ="true" debuglevel ="${debuglevel}" destdir ="${tmp.bin}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< src path ="${tmp.src}" />
< classpath refid ="javaclass.path" />
</ javac >
< copy todir ="${tmp.web}/WEB-INF/classes" includeemptydirs ="false" >
< fileset dir ="${tmp.src}" >
< exclude name ="**/*.java" />
</ fileset >
</ copy >
< copy todir ="${tmp.web}/WEB-INF/classes" includeemptydirs ="false" >
< fileset dir ="${tmp.bin}" >
< include name ="**/*.class" />
</ fileset >
</ copy >
</ target >
< target name ="compilejava-without-copy" depends ="initdir" >
< echo message ="Compiling java code " />
< javac debug ="true" debuglevel ="${debuglevel}" destdir ="${tmp.bin}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< src path ="${tmp.src}" />
< classpath refid ="javaclass.path" />
</ javac >
</ target >
< target name ="buildwar" depends ="compilejava" >
< echo message ="Packing war file " />
< copy todir ="${tmp.web}" >
< fileset dir ="${project.web}" excludes ="**/.svn/**" />
</ copy >
< delete file ="${project.war}" failonerror ="false" />
< war destfile ="${project.war}" basedir ="${tmp.web}" webxml ="${tmp.web}/WEB-INF/web.xml" encoding ="utf-8" />
< delete dir ="${tmp}" failonerror ="false" />
< delete file ="${output.dir}/${output.file}" failonerror ="false" />
< move todir ="${output.dir}" includeemptydirs ="false" filtering ="true" >
< fileset dir ="${project.build}" >
< include name ="**/*.war" />
</ fileset >
</ move >
< delete dir ="${project.build}" failonerror ="false" />
</ target >
< taskdef resource ="checkstyletask.properties"
classpath ="${checkstyle.dir}/checkstyle-5.5-all.jar" />
< target name ="checkstyle"
description ="Generates a report of code convention violations." >
< checkstyle config ="${checkstyle.dir}/my_check.xml"
failureProperty ="checkstyle.failure" failOnViolation ="false" >
< formatter type ="xml" tofile ="${checkstyle.dir}/checkstyle_report.xml" />
< fileset dir ="${project.src}" includes ="**/*.java" />
</ checkstyle >
<!-- style in="checkstyle_report.xml" out="checkstyle_report.html"
style="checkstyle.xsl" / -->
</ target >
< taskdef name ="findbugs" classname ="edu.umd.cs.findbugs.anttask.FindBugsTask"
classpathref ="findbugs.path" />
< target name ="findbugs" depends ="compilejava-without-copy"
description ="用Findbugs检查代码错误." >
< echo > 开始用Findbugs检查代码错误 </ echo >
< findbugs home ="${findbugs.dir}" output ="xml"
outputFile ="${findbugs.report.dir}/findbugs_report.xml" >
< auxClasspath >
< path refid ="junit.test.lib.path" />
</ auxClasspath >
<!-- auxClasspath path="${basedir}/lib/Regex.jar" / -->
< sourcePath path ="${tmp.src}" />
< class location ="${tmp.bin}" />
</ findbugs >
< echo > Findbugs检查代码错误完成 </ echo >
< delete dir ="${project.build}" failonerror ="false" />
</ target >
< target name ="junit-init" >
< delete dir ="${junit.class.dir}" failonerror ="false" />
< mkdir dir ="${junit.class.dir}" />
< delete dir ="${junit.reports.dir}/result-xml" failonerror ="false" />
< mkdir dir ="${junit.reports.dir}/result-xml" />
< delete dir ="${junit.reports.dir}/html" failonerror ="false" />
< mkdir dir ="${junit.reports.dir}/html" />
< delete dir ="${junit.reports.dir}/html-result" failonerror ="false" />
< mkdir dir ="${junit.reports.dir}/html-result" />
</ target >
< target name ="junit-compile" depends ="junit-init" >
< echo message ="${project.web}/WEB-INF/lib" />
< javac srcdir ="${project.src}" destdir ="${junit.class.dir}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< classpath refid ="junit.test.lib.path" />
</ javac >
< javac srcdir ="${junit.test.src}" destdir ="${junit.class.dir}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< classpath refid ="junit.test.lib.path" />
</ javac >
< copy todir ="${junit.class.dir}" >
< fileset dir ="${junit.test.resources}" >
< include name ="**/*.xml" />
</ fileset >
</ copy >
< copy todir ="${junit.class.dir}" >
< fileset dir ="${project.src}" >
< include name ="**/*.xml" />
</ fileset >
</ copy >
</ target >
< path id ="junit.test.lib.path" >
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/servlet-api.jar" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/jsp-api.jar" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/jboss-j2ee.jar" />
< fileset dir ="${project.web}/WEB-INF/lib" includes ="**/*.jar" />
< fileset dir ="${project.lib}" includes ="**/*.jar" />
</ path >
< target name ="junit-test" depends ="junit-compile" >
< junit printsummary ="yes" >
< classpath >
<!-- 指定lib和class路径,class和jar的声明不能混在一起 -->
< pathelement location ="${junit.class.dir}" />
< path refid ="junit.test.lib.path" />
</ classpath >
< batchtest todir ="${junit.reports.dir}/result-xml" >
< fileset dir ="${junit.test.src}" includes ="**/*TestCase.java" />
< formatter type ="xml" />
</ batchtest >
</ junit >
< junitreport todir ="${junit.reports.dir}/html-result" >
<!-- 指定测试结果的XML,即上一步产生的XML -->
< fileset dir ="${junit.reports.dir}/result-xml" >
< include name ="TEST-*.xml" />
</ fileset >
<!-- 根据测试结果XML,生成TESTS-TestSuites.xml,并由此产生HTML文件 -->
< report format ="frames" todir ="${junit.reports.dir}/html" />
<!--
-->
</ junitreport >
</ target >
</ project >
< project name ="genwar" default ="all" basedir ="." >
< description > - Generate war file - </ description >
< property environment ="env" />
< property name ="debuglevel" value ="source,lines,vars" />
< property name ="target" value ="1.6" />
< property name ="source" value ="1.6" />
< property name ="output.dir" location ="." />
< property name ="output.file" value ="new_cos.war" />
< property name ="project.build" location ="./build" />
< property name ="project.src" location ="./src" />
< property name ="project.web" location ="../web" />
< property name ="project.lib" location ="./lib" />
< property name ="project.res" location ="./res" />
< property name ="project.svc" location ="./svc" />
< property name ="project.war" location ="${project.build}/${output.file}" />
< property name ="tmp" location ="${project.build}/tmp" />
< property name ="tmp.src" location ="${tmp}/src" />
< property name ="tmp.lib" location ="${project.web}/WEB-INF/lib" />
< property name ="tmp.bin" location ="${tmp}/bin" />
< property name ="tmp.web" location ="${tmp}/web" />
< property name ="tmp.classes" location ="${tmp}/classes" />
< property name ="checkstyle.dir" location ="./ant-task/checkstyle" />
< property name ="findbugs.dir" location ="./ant-task/findbugs/home" />
< property name ="findbugs.report.dir" location ="./ant-task/findbugs" />
< property name ="junit.reports.dir" value ="./ant-task/junit/reports" />
< property name ="junit.class.dir" value ="./ant-task/junit/bin" />
< property name ="junit.test.src" location ="./test/java" />
< property name ="junit.test.resources" location ="./test/resources" />
< path id ="javaclass.path" >
< pathelement path ="${env.classpath}" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/servlet-api.jar" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/jsp-api.jar" />
< fileset dir ="${tmp.lib}" includes ="*.jar" />
<!-- <fileset dir="${project.lib}" includes="*.jar" /> -->
</ path >
< path id ="findbugs.path" >
< fileset dir ="${findbugs.dir}" includes ="**/*.jar" />
</ path >
< target name ="clean" >
< delete file ="${output.dir}/${output.file}" failonerror ="false" />
< delete dir ="${project.build}" failonerror ="false" />
< mkdir dir ="${project.build}" />
</ target >
< target name ="all" depends ="clean,buildwar" />
< target name ="initdir" >
< echo message ="Init directories " />
< delete dir ="${tmp}" failonerror ="false" />
< mkdir dir ="${tmp}" />
< mkdir dir ="${tmp.src}" />
< copy todir ="${tmp.src}" >
< fileset dir ="${project.src}" excludes ="**/.svn/**" />
</ copy >
< mkdir dir ="${tmp.lib}" />
<!--
<copy todir="${tmp.lib}">
<fileset dir="${project.web}/WEB-INF/lib" includes="*.jar" />
</copy>
-->
< mkdir dir ="${tmp.bin}" />
< mkdir dir ="${tmp.web}/WEB-INF/lib" />
< delete dir ="${tmp.web}/WEB-INF/classes" failonerror ="false" />
< mkdir dir ="${tmp.web}/WEB-INF/classes" />
</ target >
< target name ="compilejava" depends ="initdir" >
< echo message ="Compiling java code " />
< javac debug ="true" debuglevel ="${debuglevel}" destdir ="${tmp.bin}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< src path ="${tmp.src}" />
< classpath refid ="javaclass.path" />
</ javac >
< copy todir ="${tmp.web}/WEB-INF/classes" includeemptydirs ="false" >
< fileset dir ="${tmp.src}" >
< exclude name ="**/*.java" />
</ fileset >
</ copy >
< copy todir ="${tmp.web}/WEB-INF/classes" includeemptydirs ="false" >
< fileset dir ="${tmp.bin}" >
< include name ="**/*.class" />
</ fileset >
</ copy >
</ target >
< target name ="compilejava-without-copy" depends ="initdir" >
< echo message ="Compiling java code " />
< javac debug ="true" debuglevel ="${debuglevel}" destdir ="${tmp.bin}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< src path ="${tmp.src}" />
< classpath refid ="javaclass.path" />
</ javac >
</ target >
< target name ="buildwar" depends ="compilejava" >
< echo message ="Packing war file " />
< copy todir ="${tmp.web}" >
< fileset dir ="${project.web}" excludes ="**/.svn/**" />
</ copy >
< delete file ="${project.war}" failonerror ="false" />
< war destfile ="${project.war}" basedir ="${tmp.web}" webxml ="${tmp.web}/WEB-INF/web.xml" encoding ="utf-8" />
< delete dir ="${tmp}" failonerror ="false" />
< delete file ="${output.dir}/${output.file}" failonerror ="false" />
< move todir ="${output.dir}" includeemptydirs ="false" filtering ="true" >
< fileset dir ="${project.build}" >
< include name ="**/*.war" />
</ fileset >
</ move >
< delete dir ="${project.build}" failonerror ="false" />
</ target >
< taskdef resource ="checkstyletask.properties"
classpath ="${checkstyle.dir}/checkstyle-5.5-all.jar" />
< target name ="checkstyle"
description ="Generates a report of code convention violations." >
< checkstyle config ="${checkstyle.dir}/my_check.xml"
failureProperty ="checkstyle.failure" failOnViolation ="false" >
< formatter type ="xml" tofile ="${checkstyle.dir}/checkstyle_report.xml" />
< fileset dir ="${project.src}" includes ="**/*.java" />
</ checkstyle >
<!-- style in="checkstyle_report.xml" out="checkstyle_report.html"
style="checkstyle.xsl" / -->
</ target >
< taskdef name ="findbugs" classname ="edu.umd.cs.findbugs.anttask.FindBugsTask"
classpathref ="findbugs.path" />
< target name ="findbugs" depends ="compilejava-without-copy"
description ="用Findbugs检查代码错误." >
< echo > 开始用Findbugs检查代码错误 </ echo >
< findbugs home ="${findbugs.dir}" output ="xml"
outputFile ="${findbugs.report.dir}/findbugs_report.xml" >
< auxClasspath >
< path refid ="junit.test.lib.path" />
</ auxClasspath >
<!-- auxClasspath path="${basedir}/lib/Regex.jar" / -->
< sourcePath path ="${tmp.src}" />
< class location ="${tmp.bin}" />
</ findbugs >
< echo > Findbugs检查代码错误完成 </ echo >
< delete dir ="${project.build}" failonerror ="false" />
</ target >
< target name ="junit-init" >
< delete dir ="${junit.class.dir}" failonerror ="false" />
< mkdir dir ="${junit.class.dir}" />
< delete dir ="${junit.reports.dir}/result-xml" failonerror ="false" />
< mkdir dir ="${junit.reports.dir}/result-xml" />
< delete dir ="${junit.reports.dir}/html" failonerror ="false" />
< mkdir dir ="${junit.reports.dir}/html" />
< delete dir ="${junit.reports.dir}/html-result" failonerror ="false" />
< mkdir dir ="${junit.reports.dir}/html-result" />
</ target >
< target name ="junit-compile" depends ="junit-init" >
< echo message ="${project.web}/WEB-INF/lib" />
< javac srcdir ="${project.src}" destdir ="${junit.class.dir}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< classpath refid ="junit.test.lib.path" />
</ javac >
< javac srcdir ="${junit.test.src}" destdir ="${junit.class.dir}" source ="${source}" target ="${target}" encoding ="UTF-8" >
< classpath refid ="junit.test.lib.path" />
</ javac >
< copy todir ="${junit.class.dir}" >
< fileset dir ="${junit.test.resources}" >
< include name ="**/*.xml" />
</ fileset >
</ copy >
< copy todir ="${junit.class.dir}" >
< fileset dir ="${project.src}" >
< include name ="**/*.xml" />
</ fileset >
</ copy >
</ target >
< path id ="junit.test.lib.path" >
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/servlet-api.jar" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/jsp-api.jar" />
< pathelement path ="${env.JBOSS_HOME}/server/all/lib/jboss-j2ee.jar" />
< fileset dir ="${project.web}/WEB-INF/lib" includes ="**/*.jar" />
< fileset dir ="${project.lib}" includes ="**/*.jar" />
</ path >
< target name ="junit-test" depends ="junit-compile" >
< junit printsummary ="yes" >
< classpath >
<!-- 指定lib和class路径,class和jar的声明不能混在一起 -->
< pathelement location ="${junit.class.dir}" />
< path refid ="junit.test.lib.path" />
</ classpath >
< batchtest todir ="${junit.reports.dir}/result-xml" >
< fileset dir ="${junit.test.src}" includes ="**/*TestCase.java" />
< formatter type ="xml" />
</ batchtest >
</ junit >
< junitreport todir ="${junit.reports.dir}/html-result" >
<!-- 指定测试结果的XML,即上一步产生的XML -->
< fileset dir ="${junit.reports.dir}/result-xml" >
< include name ="TEST-*.xml" />
</ fileset >
<!-- 根据测试结果XML,生成TESTS-TestSuites.xml,并由此产生HTML文件 -->
< report format ="frames" todir ="${junit.reports.dir}/html" />
<!--
-->
</ junitreport >
</ target >
</ project >