问题似乎很明显,但实施对我来说非常困难。
我的目标是将 Ant构建脚本写入编译一些需要Annotation Processor生成的其他类的类。
我有一个自定义注释和它的处理器实现(继承自AbstractProcessor
类)。
据我所知,我需要:
代码(步骤1和2):
<target name="compileAnnotationProcessor">
<javac destdir="${OUTPUT_DIR}"
debug="true"
failonerror="true"
includeantruntime="false"
classpath="${java.class.path}">
<src>
<pathelement path="${PROJECT_DIR}/tools/src"/>
</src>
<include name="/path/to/annotation/processor/package/**"/>
</javac>
</target>
<target name="generateFilesWithAPT" depends="compileAnnotationProcessor">
<javac destdir="${OUTPUT_DIR}"
includeantruntime="false"
listfiles="false"
fork="true"
debug="true"
verbose="true">
<src>
<pathelement path="${PROJECT_DIR}/common/src/"/>
</src>
<include name="/path/to/files/to/compile/**"/>
<classpath>
<pathelement path="${OUTPUT_DIR}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<compilerarg line="-proc:only"/>
<compilerarg line="-processorpath ${OUTPUT_DIR}/path/to/annotation/processor/package/annProcessorImplement"/>
</javac>
</target>
实际上,第一项任务是执行良好并编译注释处理器实现的.class文件。它正在停止第二项任务。
Ant说:Annotation processing without compilation requested but no processors were found.
我做错了什么?
也许我应该将注释处理器类放在.jar
中?或者提供扩展名为.class的文件名作为-processorpath
参数?
我尝试了几种选择,但没有任何帮助......
注意:
我正在使用ant javac
任务而不是apt
,因为documentation声称不推荐使用apt工具和com.sun.mirror
API。
我也查看了这个question,但是没有关于如何正确编译处理器的信息。
我正在使用:
答案 0 :(得分:4)
我通常的做法是:
然后,只要您对注释有所依赖,就会自动选择注释处理器而无需任何其他配置。