1、名词解释
Ant
Ant是一种基于Java的build工具, 类似于C中的Msbuild与devenv, Ant被广为使用的是其build.xml功能,这个文件可以集成多种工具,并进行持续编译至打包完成,也可以理解为一个简单的持续集成环境
PMD
PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具检查源文件的潜在问题,可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。我们所使用的是 pmd-src-5.0.4 版本
CheckStyle
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。例如javadoc注释, 命名规范等,它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来
2、build.xml详解
利用Ant 的javac来编译java程序
<?xml version="1.0"?>
<!—设置变量 -->
<project name="wendy">
<property name="classes" value="F:\data\build\classes"/>
<property name="build" value="F:\data\build"/>
<property name="lib" value="F:\data\WebRoot\WEB-INF/lib"/>
<!—删除build路径-->
<target name="clean">
<delete dir="build"/>
</target>
<!-- 建立build/classes路径,并编译class文件到此路径下 -->
<target name="compile" depends="clean">
<mkdir dir="${classes}"/>
<javac srcdir="src\jit\diy\obj" destdir="${classes}"/>
</target>
<target name="jar" depends="run">
<jar destfile="test.jar" basedir="${classes}">
<manifest>
<attribute name="Main-class" value="test"/>
</manifest>
</jar>
</target>
利用Ant的war任务打包J2EE Web项目
<target name="war" depends="compile">
<war destfile="${build}/webproject.war" webxml="WebRoot/WEB-INF/web.xml">
<!—拷贝webroot下除了WEB-INF和META-INF的两个文件夹-->
<fileset dir="WebRoot" includes="**/*.jsp"/>
<!—拷贝lib下的jar包-->
<lib dir="${lib}"/>
<!—拷贝build\class下的class文件-->
<classes dir="${classes}"/>
</war>
</target>
3、集成PMD节点
<path id="pmd.path">
<fileset dir="${lib.dir}/pmd-src-5.0.4">
<include name="**/*.jar" />
</fileset>
</path>
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" lasspathref="pmd.path"/>
<taskdefname="cpd"classname="net.sourceforge.pmd.cpd.CPDTask"classpathref="pmd.path"/>
<target name="pmd">
<pmd shortFilenames="true">
<!—设置检查规则文件-->
<ruleset>java\basic.xml</ruleset>
<!—设置report生成路径-->
<formatter type="html" toFile="${report.dir}/foo.html" toConsole="false"/>
<fileset dir="${src.dir}">
<!—设置检查文件-->
<include name="**/*.java"/>
</fileset>
</pmd>
</target>
<target name="cpd">
<!—设置重复代码循环次数及生成文件路径-->
<cpd minimumTokenCount="100" outputFile="f:/report/cpd.txt">
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
</cpd>
</target>
4、 集成CheckStyle节点
<target name="my_check" depends="init">
<taskdefresource="checkstyletask.properties"classpath="${checkstyle.dir}\checkstyle-5.6-all.jar"/>
<!—设置检查规则文件-->
<checkstyle config="${checkstyle.dir}\test_checkstyle.xml">
<!—设置被检查文件-->
<fileset dir="F:\data\src" includes="**/*.java"/>
<formatter type="plain" />
<!—设置检查结果输出-->
<formatter type="xml" toFile="${result.dir}\checkstyle_report.xml" />
</checkstyle>
</target>
<target name="xml2html" depends="my_check">
<!—设置html检查结果输出-->
<xsltin="${result.dir}\checkstyle_report.xml"out="${result.html}\checkstyle.html"style="${checkstyle.dir}\contrib\checkstyle-frames-errors.xsl">
</xslt>
</target>