PMD ANT脚本给出了task.sf类net.sourceforge.pmd.ant.PMDTask无法使用类加载器AntClassLoader []找到

时间:2016-11-23 15:47:24

标签: ant pmd

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="info" name="MyProject">
    <property name="src.dir"     value="src"/>
    <property name="build.dir"   value="build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="jar.dir"     value="${build.dir}/jar"/>
    <property name="lib.dir"     value="lib"/>
    <property name="jar.name" value="${ant.project.name}"/>

    <path id="classpath">
        <fileset dir="${lib.dir}" includes="**/*.jar"/>
    </path>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile" depends="clean">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" debug="true" nowarn="true" debuglevel="lines,vars,source"/>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${jar.name}.jar" basedir="${classes.dir}">
            <exclude name="**/Main.class" />
            <fileset dir="${src.dir}" includes="**/*.java">
                <exclude name="**/Main.java" />
            </fileset>  
            <zipgroupfileset dir="${lib.dir}" includes="*.jar">
                <exclude name="**/Utils.jar" />
            </zipgroupfileset>
        </jar>
    </target>


    <target name="build" depends="jar"/>

    <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
    <target name="pmd">
    <pmd shortFilenames="true"  failuresPropertyName="failures.count" rulesetfiles="\path\pmd\ruleSet.xml">
        <formatter type="html" toFile="pmd_report.html" toConsole="true"/>
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </pmd>
    </target>

    <target name="info">    
        <echo message="Available Targets:"/>
        <echo message="     clean"/>
        <echo message="     compile"/>
        <echo message="     jar"/>
        <echo message="     build"/>
        <echo message="     pmd"/>
    </target>
</project>

这个脚本给了我这个&#34;使用类加载器AntClassLoader []&#34;

找不到taskdef类net.sourceforge.pmd.ant.PMDTask

我在项目的lib文件夹中添加了PMD库jar文件,其他库作为jar文件存在。

但是,如果我将库中的添加路径引用更改为jar文件,则效果很好。

<path id="pmd.classpath">
<fileset dir="C:\Users\PMD\pmd-bin-5.5.2">
 <include name="**/*.jar"/>
 </fileset>
    </path>

我可以知道这是什么问题吗?我对ANT和PMD都很陌生,任何帮助都将受到赞赏。

由于

1 个答案:

答案 0 :(得分:0)

要检查的第一件事是 lib 目录中的文件pmd-core-*.jar

其次在taskdef任务中添加对路径的引用:

<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="classpath"/>