2016-11-23 1 views
0
<?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> 

이 스크립트는 저에게이 "taskdef 클래스를 제공 net.sourceforge.pmd.ant.PMDTask를 찾을 수 없습니다PMD의 ANT 스크립트 net.sourceforge.pmd.ant.PMDTask이 클래스 로더를 사용하여 찾을 수 없습니다 taskdef 클래스를 제공 AntClassLoader []

다른 라이브러리가 jar 파일로 존재하는 프로젝트의 lib 폴더에 PMD 라이브러리 jar 파일을 추가했습니다.

하지만 jarfile이 아닌 라이브러리에 경로 참조를 변경하면 제대로 작동합니다.

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

문제점이 무엇인지 알 수 있습니까? 나는 ANT와 PMD에 꽤 새로운데, 어떤 도움을 주시면 감사하겠습니다. 확인

감사

답변

0

우선은 LIB 디렉토리에있는 파일 pmd-core-*.jar입니까?

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

는 둘째 taskdef 작업의 경로에 대한 참조를 추가

관련 문제