ivs*_*tas 8 java ant apt annotations build
问题似乎很明显,但实施对我来说非常困难.
我的目标是编写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>
Run Code Online (Sandbox Code Playgroud)
实际上,第一个任务是执行良好并编译注释处理器实现的.class文件.它停在第二个任务.
Ant说: Annotation processing without compilation requested but no processors were found.
我究竟做错了什么?也许我应该把注释处理器类放在一个.jar?或者提供带.class扩展名的文件名作为-processorpath参数?我尝试了几个选项但没有任何帮助..
笔记:
我使用的是ant javac任务而不是apt一个,因为文档声称apt工具和com.sun.mirrorAPI已被弃用.我也查看了这个问题,但没有关于如何正确编译处理器的信息.
我正在使用:
我通常的做法是:
然后,只要您依赖注释,注释处理器就会自动选取,无需任何额外配置。
| 归档时间: |
|
| 查看次数: |
3891 次 |
| 最近记录: |