使用 Apache Ant 设置具有依赖关系的注释处理器
Setting up Annotation Processor with Dependencies using Apache Ant
我有一个依赖于其他库的注释处理器,例如番石榴,下议院。我已经使用 Eclipse 和 Maven 进行了设置。但是,我想将它与 Apache Ant 的构建文件一起使用。所以,我创建了以下目标:
<target name="compile.frontend" depends="compile.main">
<mkdir dir="${target}target/frontend/classes" />
<javac encoding="utf-8" destdir="${target}target/frontend/classes" debug="on" nowarn="true" source="1.6" target="1.6" optimize="on" includeantruntime="false">
<src path="src/application/java"/>
<classpath>
<fileset dir="lib">
<include name="main/*.jar" />
</fileset>
<pathelement location="${target}target/main/classes" />
</classpath>
<compilerarg line="-processorpath ${basedir}/lib/main/MyProcessor-1.0.jar;${basedir}/lib/main/javapoet-1.7.0.jar;${basedir}/lib/main/guava-17.0.jar;${basedir}/lib/main/commons-lang-2.6.jar"/>
<compilerarg line="-processor com.me.MyProcessor"/>
<compilerarg line="-s ${target}target/frontend/classes/"/>
</javac>
</target>
我得到的错误是处理器生成的 class 我实例化的缺失,"cannot find symbol"。
我用“;”添加的依赖项分隔列表与我使 Eclipse 正确使用处理器的依赖项相同。我怀疑来自输出文件夹 <compilerarg line="-s...
,因为当我删除依赖项,即 JavaPoet 时,我得到了 JavaPoet 的 "java.lang.NoClassDefFoundError"。有什么建议吗?
问题是关于在 javac 行下使用 exclude name
的某些目录排除:
<exclude name="**/folder_name/**"/>
也不需要像我在最初的问题中那样添加 compilerarg line
s。将库放在类路径下就足够了。
我有一个依赖于其他库的注释处理器,例如番石榴,下议院。我已经使用 Eclipse 和 Maven 进行了设置。但是,我想将它与 Apache Ant 的构建文件一起使用。所以,我创建了以下目标:
<target name="compile.frontend" depends="compile.main">
<mkdir dir="${target}target/frontend/classes" />
<javac encoding="utf-8" destdir="${target}target/frontend/classes" debug="on" nowarn="true" source="1.6" target="1.6" optimize="on" includeantruntime="false">
<src path="src/application/java"/>
<classpath>
<fileset dir="lib">
<include name="main/*.jar" />
</fileset>
<pathelement location="${target}target/main/classes" />
</classpath>
<compilerarg line="-processorpath ${basedir}/lib/main/MyProcessor-1.0.jar;${basedir}/lib/main/javapoet-1.7.0.jar;${basedir}/lib/main/guava-17.0.jar;${basedir}/lib/main/commons-lang-2.6.jar"/>
<compilerarg line="-processor com.me.MyProcessor"/>
<compilerarg line="-s ${target}target/frontend/classes/"/>
</javac>
</target>
我得到的错误是处理器生成的 class 我实例化的缺失,"cannot find symbol"。
我用“;”添加的依赖项分隔列表与我使 Eclipse 正确使用处理器的依赖项相同。我怀疑来自输出文件夹 <compilerarg line="-s...
,因为当我删除依赖项,即 JavaPoet 时,我得到了 JavaPoet 的 "java.lang.NoClassDefFoundError"。有什么建议吗?
问题是关于在 javac 行下使用 exclude name
的某些目录排除:
<exclude name="**/folder_name/**"/>
也不需要像我在最初的问题中那样添加 compilerarg line
s。将库放在类路径下就足够了。