在進行Jenkins+ant+tomcat編譯項目自動化的時候,運行過程中會出現報錯:
Unable to load annotation processing manager org.eclipse.jdt.internal.compiler.apt.dispatch.BatchAnnotationProcessorManager from classpath.

原因是用ant編譯時通過eclipsejdt去編譯的,是依賴eclipse或myeclipse里面的插件的,所以需要把eclipse或myeclipse的插件里面的某些jar文件放到ant安裝目錄的lib文件夾內
在eclipse安裝目錄搜索jdt,找到
org.eclipse.jdt.annotation_1.1.100.v20160418-1457.jar (注意:下滑杠后面的部分因安裝版本不一樣是不一樣的,只要找下滑杠前面部分跟我寫出來的一致就行)
org.eclipse.jdt.annotation_2.1.100.v20170511-1408.jar
org.eclipse.jdt.apt.core_3.5.50.v20170920-0950.jar
org.eclipse.jdt.apt.ui_3.5.0.v20170505-1107.jar
org.eclipse.jdt.compiler.apt_1.3.60.v20171129-1553.jar
org.eclipse.jdt.compiler.tool_1.2.51.v20171122-1403.jar
org.eclipse.jdt.core_3.13.101.v20180215-0725.jar
org.eclipse.jdt.debug.ui_3.8.52.v20180104-1240.jar
下圖我紅色圈出來的可能沒有圈完全

復制完成如下圖

復制完成之后再運行就ok了
下面附上我的ant腳本:
<?xml version="1.0" encoding="UTF-8"?> <project name="BPP_JAR_Deploy" default="pack" basedir="."> <property environment="env" /> <property name="webapp.name" value="BPP_JAR_Deploy" /> <property name="catalina.home" value="D:\apache-tomcat-7.0.68" /> <property name="dist.dir" value="${basedir}/dist" /> <property name="ant.dir" value="C:\apache-ant-1.10.3" /> <property name="webRoot.dir" value="${basedir}/WebRoot" /> <property name="src.dir" value="${basedir}/src" /> <!--<property name="config.dir" value="${basedir}/config" />--> <property name="lib.dir" value="${basedir}/lib" /> <property name="build.dir" value="${basedir}/build" /> <!-- 使用eclipse jdt進行編譯 --> <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /> <!-- 初始化classpath依賴包 --> <path id="project.classpath"> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> <!-- 添加tomcat類路徑 --> <fileset dir="${catalina.home}/lib"> <include name="*.jar" /> </fileset> <!-- ant lib包 --> <fileset dir="${ant.dir}"> <include name="**/*.jar" /> </fileset> </path> <!-- get the source compile classpath in a printable form --> <pathconvert pathsep="${line.separator}| |-- " property="echo.path.compile" refid="project.classpath"> </pathconvert> <!-- show classpath jars --> <target name="print_classpath"> <echo message="|-- compile classpath"/> <echo message="| |"/> <echo message="| |-- ${echo.path.compile}"/> </target> <!-- 刪除舊目錄 --> <target name="clear" description="刪除舊文件"> <delete dir="${build.dir}" /> <delete dir="${dist.dir}" /> <delete file="${catalina.home}/webapps/${webapp.name}.war" /> <delete dir="${catalina.home}/webapps/${webapp.name}" /> </target> <!-- 重新建目錄 --> <target name="init" depends="clear" description="初始化目錄"> <mkdir dir="${build.dir}/classes" /> <mkdir dir="${dist.dir}" /> </target> <!-- 編譯java文件 --> <target name="compile" depends="init" description="編譯java文件"> <echo message="begin compile..." /> <javac srcdir="${src.dir}" destdir="${build.dir}/classes" includeantruntime="false" nowarn="false" source="1.6" target="1.6" deprecation="true" debug="true" encoding="UTF-8" classpathref="project.classpath" > <compilerarg line="-Xlint:unchecked" /> </javac> <copy todir="${build.dir}"> <fileset dir="${src.dir}"> <include name="**/*.xml" /> <include name="**/*.properties" /> <include name="**/*.sql" /> </fileset> </copy> <echo message="end compile..." /> </target> <!-- 編譯后打jar包 --> <target name="pack" depends="compile"> <jar jarfile="${build.dir}/${webapp.name}.jar"> <fileset dir="${build.dir}/classes"> <include name="**/*.class"/> </fileset> </jar> </target> </project>
