pmd/pmd/build.xml
Xavier Le Vourch b32b4fc612 asm jar updated to 3.2
git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@6955 51baf565-9d33-0410-a72c-fc3788e3496d
2009-06-13 00:15:00 +00:00

479 lines
23 KiB
XML

<project name="pmd" default="test" basedir=".">
<property file="local.properties" />
<property name="dir.lib" value="${basedir}/lib" />
<property name="dir.src" value="src" />
<property name="dir.build" value="build" />
<property name="dir.rulesets" value="rulesets" />
<property name="dir.regress" value="regress" />
<property name="dir.reports" value="${basedir}/reports" />
<property name="dir.api" value="docs/api" />
<property name="version" value="5.0" />
<property environment="env"/>
<property name="ant.jar" value="${env.ANT_HOME}/lib/ant.jar" />
<property name="ant-testutil.jar" value="${env.ANT_HOME}/lib/ant-testutil.jar" />
<property name="asm.version" value="3.2" />
<property name="jaxen.version" value="1.1.1" />
<property name="saxon.version" value="9" />
<property name="junit.version" value="4.4" />
<property name="rhino.version" value="cvs-11282008" />
<property name="javacc-home.path" value="${dir.lib}" />
<!--Settings-->
<property name="outputTestResultsToFile" value="true" />
<path id="dependencies.path">
<pathelement location="${dir.build}" />
<fileset dir="${dir.lib}">
<include name="jaxen-${jaxen.version}.jar" />
<include name="saxon${saxon.version}.jar" />
<include name="asm-${asm.version}.jar" />
<include name="junit-${junit.version}.jar" />
<include name="js-${rhino.version}.jar" />
</fileset>
</path>
<target name="clean" description="Deletes the build directory and the pmd-x.x jar file.">
<delete dir="${dir.build}" />
<delete file="${dir.lib}/pmd-${version}.jar" />
<delete file="${dir.lib}/pmd-src-${version}.jar" />
<delete file="${dir.lib}/pmd-test-${version}.jar" />
<delete dir="${dir.api}" />
<mkdir dir="${dir.build}" />
</target>
<target name="compile" description="Compiles the code">
<mkdir dir="${dir.build}" />
<javac source="1.5" target="1.5" encoding="latin1" deprecation="true" debug="true" optimize="false" srcdir="${dir.src}:${dir.regress}" destdir="${dir.build}">
<classpath>
<path refid="dependencies.path" />
</classpath>
</javac>
<copy todir="${dir.build}/net/sourceforge/pmd/util/viewer/resources">
<fileset dir="${dir.src}/net/sourceforge/pmd/util/viewer/resources">
<include name="*.properties" />
</fileset>
</copy>
</target>
<target name="copy" description="Copies the rulesets directory contents into the build directory">
<mkdir dir="${dir.lib}" />
<copy todir="${dir.build}/rulesets">
<fileset dir="${dir.rulesets}">
<include name="**/*.xml" />
<include name="**/*.properties" />
</fileset>
</copy>
<copy todir="${dir.build}/test/net/sourceforge/pmd">
<fileset dir="${dir.regress}/test/net/sourceforge/pmd">
<include name="**/xml/*.xml" />
</fileset>
</copy>
<copy todir="${dir.build}/test/net/sourceforge/pmd/coverage">
<fileset dir="${dir.regress}/test/net/sourceforge/pmd/coverage">
<include name="**/*.conf" />
</fileset>
</copy>
</target>
<target name="jar" depends="copy,compile" description="Jars up the classes and rulesets">
<jar jarfile="${dir.lib}/pmd-${version}.jar">
<fileset dir="${dir.build}" includes="net/sourceforge/pmd/**/**,test/net/sourceforge/pmd/testframework/**/**,rulesets/**"/>
<zipfileset dir="etc" includes="ruleset.dtd,ruleset_xml_schema.xsd" prefix="rulesets"/>
<manifest>
<attribute name="Main-Class" value="net.sourceforge.pmd.PMD" />
<attribute name="Class-Path" value="jaxen-${jaxen.version}.jar saxon${saxon.version}.jar js-${rhino.version}.jar asm-${asm.version}.jar" />
</manifest>
</jar>
<jar jarfile="${dir.lib}/pmd-test-${version}.jar"
includes="test/net/sourceforge/pmd/**/**"
excludes="test/net/sourceforge/pmd/testframework/**/**"
basedir="${dir.build}" />
</target>
<target name="jarsrc" depends="copy,compile" description="Jars up the source directory">
<jar jarfile="${dir.lib}/pmd-src-${version}.jar" basedir="${dir.src}" />
</target>
<target name="pmdOnPmd" description="Runs PMD on PMD" depends="copy, compile">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="dependencies.path" />
<echo message="Running dogfood..."/>
<pmd rulesetfiles="${dir.rulesets}/internal/dogfood.xml" shortFilenames="true" minimumpriority="5" failonruleviolation="true" failonerror="true">
<version>java 1.5</version>
<formatter type="text" toConsole="true"/>
<fileset dir="${dir.src}">
<include name="**/*.java" />
</fileset>
</pmd>
<echo message="Running regress-dogfood..."/>
<pmd rulesetfiles="${dir.rulesets}/internal/regress-dogfood.xml" shortFilenames="true" minimumpriority="5" failonruleviolation="true" failonerror="true">
<version>java 1.5</version>
<formatter type="text" toConsole="true"/>
<fileset dir="${dir.regress}">
<include name="**/*.java" />
</fileset>
</pmd>
</target>
<target name="reports" description="Runs various reports on PMD" depends="checkstyle, pmd-dogfood-goal, cpdOnPmd, clover"/>
<target name="checkstyle" description="Runs checkstyle on PMD">
<mkdir dir="${dir.reports}" />
<taskdef resource="checkstyletask.properties" classpath="${checkstyle.jar}"/>
<checkstyle config="tools/config/checkstyle-config.xml" failOnViolation="false">
<formatter type="xml" toFile="${dir.reports}/checkstyle_errors.xml"/>
<fileset dir="${dir.src}">
<include name="**/*.java" />
</fileset>
</checkstyle>
</target>
<target name="pmd-dogfood-goal" description="Runs pmd-dogfood-goal.xml on PMD" depends="copy, compile">
<mkdir dir="${dir.reports}" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="dependencies.path" />
<pmd rulesetfiles="${dir.rulesets}/internal/dogfood-goal.xml" shortFilenames="false" minimumpriority="5" failonruleviolation="false" failonerror="true">
<version>java 1.5</version>
<formatter type="xml" toFile="${dir.reports}/pmd-dogfood-goal.xml"/>
<fileset dir="${dir.src}">
<include name="**/*.java" />
</fileset>
</pmd>
<pmd rulesetfiles="${dir.rulesets}/internal/regress-dogfood-goal.xml" shortFilenames="false" minimumpriority="5" failonruleviolation="false" failonerror="true">
<version>java 1.5</version>
<formatter type="xml" toFile="${dir.reports}/pmd-regress-dogfood-goal.xml"/>
<fileset dir="${dir.regress}">
<include name="**/*.java" />
</fileset>
</pmd>
</target>
<target name="clover" description="Generates clover report">
<antcall>
<!-- all targets need to be called in sequence for clover to work -->
<target name="clean"/>
<target name="with.clover"/>
<target name="regress"/>
<target name="clover.reports"/>
</antcall>
<antcall target="clean"/>
</target>
<target name="clover.setup">
<fail unless="clover.home" message="clover.home location is not defined properly" />
<property name ="clover.jar" location="${clover.home}/lib/clover.jar" />
<property name="clover.license.path" value="tools/config/clover2.license" />
<taskdef resource="cloverlib.xml" classpath="${clover.jar}" />
</target>
<target name="with.clover" depends="clover.setup">
<mkdir dir="${dir.reports}/clover"/>
<clover-setup initString="${dir.reports}/clover/db/coverage.db">
<fileset dir="${dir.src}"/>
<fileset dir="${dir.regress}">
<include name="test/net/sourceforge/pmd/testframework/**/*.java"/>
</fileset>
</clover-setup>
</target>
<target name="clover.reports" depends="with.clover">
<clover-report>
<current outfile="${dir.reports}/clover">
<format type="html"/>
</current>
<current outfile="${dir.reports}/clover/clover.xml">
<format type="xml"/>
</current>
</clover-report>
</target>
<target name="cpdOnPmd" description="Runs CPD on PMD" depends="copy, compile">
<taskdef name="cpd" classname="net.sourceforge.pmd.cpd.CPDTask" classpathref="dependencies.path" />
<cpd language="java" minimumTokenCount="100" format="xml" outputFile="${dir.reports}/cpd.xml">
<fileset dir="${dir.src}">
<include name="**/*.java" />
<exclude name="**/*ast/ParseException.java" />
<exclude name="**/*ast/TokenMgrError.java" />
<exclude name="**/*ast/Token.java" />
<exclude name="**/*ast/*CharStream.java" />
<exclude name="**/*ast/*Parser.java" />
<exclude name="**/*ast/*ParserState.java" />
<exclude name="**/*ast/*ParserTokenManager.java" />
<exclude name="**/*ast/*ParserVisitorAdapter.java" />
</fileset>
</cpd>
</target>
<condition property="testResultsToFile">
<istrue value="${outputTestResultsToFile}"/>
</condition>
<target name="test" depends="compile,copy" description="Runs the unit tests">
<antcall target="test-execute">
<param name="test.outputdir" value="${dir.reports}/test"/>
<param name="test.jvm" value="java"/>
<param name="test.dependencies" value="dependencies.path"/>
<param name="test.regression" value="false"/>
<param name="test.printsummary" value="true"/>
</antcall>
</target>
<target name="regress" depends="compile,copy" description="Runs the regression unit tests">
<antcall target="test-execute">
<param name="test.outputdir" value="${dir.reports}/regress"/>
<param name="test.jvm" value="java"/>
<param name="test.dependencies" value="dependencies.path"/>
<param name="test.regression" value="true"/>
<param name="test.printsummary" value="false"/>
</antcall>
</target>
<target name="test-execute" description="Runs the unit tests">
<delete dir="${test.outputdir}" />
<mkdir dir="${test.outputdir}/xml"/>
<junit printsummary="${test.printsummary}" showoutput="no" filtertrace="yes" haltonfailure="no" jvm="${test.jvm}" forkmode="perBatch"
failureProperty="test.failure">
<sysproperty key="pmd.regress" value="${test.regression}"/>
<classpath>
<path refid="${test.dependencies}" />
<path path="${dir.regress}"/>
<path path="${clover.jar}"/>
<path path="${ant-testutil.jar}"/>
</classpath>
<batchtest fork="yes" todir="${test.outputdir}/xml">
<fileset dir="${dir.regress}">
<include name="test/**/*Test.java" />
<exclude name="test/**/Abstract*"/>
</fileset>
</batchtest>
<formatter type="xml" if="testResultsToFile"/>
</junit>
<antcall target="test-report">
<param name="test.outputdir" value="${test.outputdir}"/>
</antcall>
<fail if="test.failure"/>
</target>
<target name="test-report" if="testResultsToFile" description="generate reports">
<junitreport todir="${test.outputdir}/xml">
<fileset dir="${test.outputdir}/xml">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${test.outputdir}/html" />
</junitreport>
<xslt in="${test.outputdir}/xml/TESTS-TestSuites.xml" style="etc/xslt/junit-txt-output.xsl" out="${test.outputdir}/summary.txt" />
<concat>
<filelist dir="${test.outputdir}" files="summary.txt"/>
</concat>
</target>
<target name="symtabtest" depends="compile" description="Runs the unit tests for the symboltable package">
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<path refid="dependencies.path" />
</classpath>
<batchtest fork="no" todir="${dir.build}">
<fileset dir="${dir.regress}">
<include name="test/**/symboltable/**/*Test.java" />
</fileset>
</batchtest>
<formatter type="plain" />
</junit>
</target>
<target name="dfatest" depends="compile" description="Runs the unit tests for the dfa package">
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<path refid="dependencies.path" />
</classpath>
<batchtest fork="no" todir="${dir.build}">
<fileset dir="${dir.regress}">
<include name="test/**/dfa/**/*Test.java" />
</fileset>
</batchtest>
<formatter type="plain" />
</junit>
</target>
<target name="cpdtest" depends="compile" description="Runs the unit tests for the CPD package">
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<path refid="dependencies.path" />
</classpath>
<batchtest fork="no" todir="${dir.build}">
<fileset dir="${dir.regress}">
<include name="test/**/cpd/**/*Test.java" />
</fileset>
</batchtest>
<formatter type="plain" />
</junit>
</target>
<target name="alljavacc" description="Generates all JavaCC aspects within PMD" depends="dummyjjtree,javajjtree,jspjjtree,cppjavacc">
</target>
<target name="dummyjjtree" description="Generates the reusable JavaCC aspects">
<delete dir="src/net/sourceforge/pmd/lang/ast/dummy" />
<mkdir dir="src/net/sourceforge/pmd/lang/ast/dummy" />
<jjtree target="etc/grammar/dummy.jjt" outputdirectory="src/net/sourceforge/pmd/lang/ast/dummy" javacchome="${javacc-home.path}" />
<!-- Generate CharStream interface -->
<javacc usercharstream="true" target="src/net/sourceforge/pmd/lang/ast/dummy/dummy.jj" outputdirectory="src/net/sourceforge/pmd/lang/ast/dummy" javacchome="${javacc-home.path}" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/CharStream.java" token="net.sourceforge.pmd.lang.ast.dummy" value="net.sourceforge.pmd.lang.ast" />
<move overwrite="true" file="src/net/sourceforge/pmd/lang/ast/dummy/CharStream.java" tofile="src/net/sourceforge/pmd/lang/ast/CharStream.java" />
<!-- Generate ASCII w/ Unicode Escapes CharStream implementation -->
<javacc usercharstream="false" unicodeinput="false" javaunicodeescape="true" static="false" target="src/net/sourceforge/pmd/lang/ast/dummy/dummy.jj" outputdirectory="src/net/sourceforge/pmd/lang/ast/dummy" javacchome="${javacc-home.path}" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/JavaCharStream.java" token="net.sourceforge.pmd.lang.ast.dummy" value="net.sourceforge.pmd.lang.ast" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/JavaCharStream.java" token="public class JavaCharStream" value="public class JavaCharStream implements CharStream" />
<move overwrite="true" file="src/net/sourceforge/pmd/lang/ast/dummy/JavaCharStream.java" tofile="src/net/sourceforge/pmd/lang/ast/JavaCharStream.java" />
<!-- Generate ASCII w/o Unicode Escapes CharStream implementation -->
<javacc usercharstream="false" unicodeinput="false" javaunicodeescape="false" static="false" target="src/net/sourceforge/pmd/lang/ast/dummy/dummy.jj" outputdirectory="src/net/sourceforge/pmd/lang/ast/dummy" javacchome="${javacc-home.path}" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/SimpleCharStream.java" token="net.sourceforge.pmd.lang.ast.dummy" value="net.sourceforge.pmd.lang.ast" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/SimpleCharStream.java" token="public class SimpleCharStream" value="public class SimpleCharStream implements CharStream" />
<move overwrite="true" file="src/net/sourceforge/pmd/lang/ast/dummy/SimpleCharStream.java" tofile="src/net/sourceforge/pmd/lang/ast/SimpleCharStream.java" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/TokenMgrError.java" token="net.sourceforge.pmd.lang.ast.dummy" value="net.sourceforge.pmd.lang.ast" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/TokenMgrError.java" token="extends Error" value="extends RuntimeException" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/TokenMgrError.java" token="static final int" value="public static final int" />
<replace file="src/net/sourceforge/pmd/lang/ast/dummy/TokenMgrError.java">
<replacetoken><![CDATA["Lexical error at line "]]></replacetoken>
<replacevalue><![CDATA["Lexical error in file " + AbstractTokenManager.getFileName() + " at line "]]></replacevalue>
</replace>
<move overwrite="true" file="src/net/sourceforge/pmd/lang/ast/dummy/TokenMgrError.java" tofile="src/net/sourceforge/pmd/lang/ast/TokenMgrError.java" />
<delete dir="src/net/sourceforge/pmd/lang/ast/dummy" />
</target>
<target name="javajjtree" description="Generates the Java parser and AST source filesr">
<delete file="src/net/sourceforge/pmd/lang/java/ast/Java.jj" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/JavaParser.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/JavaParserConstants.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/JavaParserTreeConstants.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/JavaParserTokenManager.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/Token.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/TokenMgrError.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/ParseException.java" />
<jjtree target="etc/grammar/Java.jjt" outputdirectory="src/net/sourceforge/pmd/lang/java/ast" javacchome="${javacc-home.path}" />
<!-- Ensure generated using CharStream interface -->
<javacc static="false" usercharstream="true" target="src/net/sourceforge/pmd/lang/java/ast/Java.jj" outputdirectory="src/net/sourceforge/pmd/lang/java/ast" javacchome="${javacc-home.path}" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/Java.jj" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/Node.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/SimpleNode.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/CharStream.java" />
<delete file="src/net/sourceforge/pmd/lang/java/ast/TokenMgrError.java" />
<replace file="src/net/sourceforge/pmd/lang/java/ast/JavaParserTokenManager.java" token="class JavaParserTokenManager" value="class JavaParserTokenManager extends net.sourceforge.pmd.lang.ast.AbstractTokenManager" />
<replace file="src/net/sourceforge/pmd/lang/java/ast/JavaParser.java" token="throw new Error" value="throw new RuntimeException" />
<replace file="src/net/sourceforge/pmd/lang/java/ast/ParseException.java" token="extends Exception" value="extends net.sourceforge.pmd.lang.ast.ParseException" />
<replace file="src/net/sourceforge/pmd/lang/java/ast/JavaParserVisitor.java" token="SimpleNode" value="JavaNode" />
<replace file="src/net/sourceforge/pmd/lang/java/ast/JJTJavaParserState.java">
<replacetoken>public class</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.Node;
public class]]></replacevalue>
</replace>
<replace file="src/net/sourceforge/pmd/lang/java/ast/Token.java">
<replacetoken><![CDATA[ default : return new Token(ofKind, image);
}
}
]]></replacetoken>
<replacevalue><![CDATA[ case JavaParserConstants.RUNSIGNEDSHIFT :
case JavaParserConstants.RSIGNEDSHIFT :
case JavaParserConstants.GT:
return new GTToken(ofKind, image);
default : return new Token(ofKind, image);
}
}
public static final class GTToken extends Token {
public int realKind = JavaParserConstants.GT;
public GTToken(int ofKind, String image) {
super(ofKind, image);
}
}
]]></replacevalue>
</replace>
</target>
<target name="jspjjtree" description="Generates the JSP parser and AST source filesr">
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/JspParser.jj" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/JspParser.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/JspParserConstants.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/JspParserTreeConstants.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/JspParserTokenManager.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/Token.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/TokenMgrError.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/ParseException.java" />
<jjtree target="etc/grammar/JspParser.jjt" outputdirectory="src/net/sourceforge/pmd/lang/jsp/ast/" javacchome="${javacc-home.path}" />
<!-- Ensure generated using CharStream interface -->
<javacc static="false" usercharstream="true" target="src/net/sourceforge/pmd/lang/jsp/ast/JspParser.jj" outputdirectory="src/net/sourceforge/pmd/lang/jsp/ast" javacchome="${javacc-home.path}" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/JspParser.jj" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/Node.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/SimpleNode.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/CharStream.java" />
<delete file="src/net/sourceforge/pmd/lang/jsp/ast/TokenMgrError.java" />
<replace file="src/net/sourceforge/pmd/lang/jsp/ast/JspParserTokenManager.java" token="class JspParserTokenManager" value="class JspParserTokenManager extends net.sourceforge.pmd.lang.ast.AbstractTokenManager" />
<replace file="src/net/sourceforge/pmd/lang/jsp/ast/JspParser.java" token="throw new Error" value="throw new RuntimeException" />
<replace file="src/net/sourceforge/pmd/lang/jsp/ast/ParseException.java" token="extends Exception" value="extends net.sourceforge.pmd.lang.ast.ParseException" />
<replace file="src/net/sourceforge/pmd/lang/jsp/ast/JspParserVisitor.java" token="SimpleNode" value="JspNode" />
<replace file="src/net/sourceforge/pmd/lang/jsp/ast/JJTJspParserState.java">
<replacetoken>public class</replacetoken>
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.Node;
public class]]></replacevalue>
</replace>
</target>
<target name="cppjavacc" description="Generates the C++ grammar">
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/CppParserConstants.java" />
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/CppParserTokenManager.java" />
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/Token.java" />
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/TokenMgrError.java" />
<!-- Ensure generated using CharStream interface -->
<javacc static="false"
usercharstream="true"
target="etc/grammar/cpp.jj"
outputdirectory="src/net/sourceforge/pmd/lang/cpp/ast"
javacchome="${javacc-home.path}" />
<replace file="src/net/sourceforge/pmd/lang/cpp/ast/CppParserTokenManager.java" token="class CppParserTokenManager" value="class CppParserTokenManager extends net.sourceforge.pmd.lang.ast.AbstractTokenManager" />
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/CharStream.java" />
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/ParseException.java" />
<delete file="src/net/sourceforge/pmd/lang/cpp/ast/TokenMgrError.java" />
</target>
<target name="recompile" depends="clean,compile,copy" description="Does a complete recompile" />
<target name="dist" depends="recompile,jar" description="Preps things for a release" />
<target name="cpdjnlp" depends="dist" description="Uploads a new CPD JNLP thingy to the PMD web site">
<signjar jar="${dir.lib}/pmd-${version}.jar" storetype="${keystore.type}" alias="${keystore.alias}" keystore="${keystore.path}" storepass="${keystore.password}" />
<exec executable="scp" os="Linux">
<arg line=" ${dir.lib}/pmd-${version}.jar pmd.sourceforge.net:/home/groups/p/pm/pmd/htdocs" />
</exec>
<echo message="Uploading cpd.jnlp" />
<exec executable="scp" os="Linux">
<arg line=" etc/cpd.jnlp pmd.sourceforge.net:/home/groups/p/pm/pmd/htdocs" />
</exec>
</target>
<target name="javadoc" description="Generates Javadocs">
<mkdir dir="${dir.api}" />
<javadoc packagenames="com.*, net.*, org.*" sourcepath="${dir.src}" destdir="${dir.api}" doctitle="PMD ${version} API" failonerror="yes">
<tag name="todo" enabled="false"/>
<classpath>
<fileset dir="${dir.lib}">
<include name="*.jar" />
</fileset>
<pathelement location="${ant.jar}" />
</classpath>
</javadoc>
</target>
<target name="qa" depends="dist, regress, pmdOnPmd, cpdOnPmd, symtabtest, dfatest, cpdtest, javadoc" description="Runs all tests (used for continuous integration tests)"/>
</project>