[英]How to compile the annotation processor with Ant?
这个问题似乎很明显,但是对我来说实现起来很困难。
我的目标是编写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文件。 它正在第二个任务处停止。
蚂蚁说: Annotation processing without compilation requested but no processors were found.
我究竟做错了什么? 也许我应该将注释处理器类放在.jar
? 还是提供带有.class扩展名的文件名作为-processorpath
参数? 我尝试了几种选择,但没有帮助。
笔记:
我使用的是ant javac
任务而不是apt
任务,因为文档声称该apt工具以及com.sun.mirror
API已弃用。 我也仔细研究了这个问题 ,但是没有信息介绍如何以正确的方式编译处理器。
我正在使用:
我通常的方法是:
然后,无论您对注释有什么依赖性,注释处理器都将自动被拾取,而无需任何其他配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.