繁体   English   中英

如何用Ant编译注释处理器?

[英]How to compile the annotation processor with Ant?

这个问题似乎很明显,但是对我来说实现起来很困难。

我的目标是编写Ant构建脚本编译某些需要由Annotation Processor 生成其他类的类 我有一个自定义注释,它是处理器的实现(从AbstractProcessor类继承)。

据我了解,我需要:

  1. 编译注释处理器
  2. 在一些带注释的类上运行编译器以生成新的类。
  3. 编译需要生成类的类

代码(步骤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已弃用。 我也仔细研究了这个问题 ,但是没有信息介绍如何以正确的方式编译处理器。

我正在使用:

  • Java 1.6
  • 蚂蚁1.8.2

我通常的方法是:

  • 将注释与注释处理器一起打包在其自己的jar中
  • 通过该jar中的META-INF / services注册注释处理器

然后,无论您对注释有什么依赖性,注释处理器都将自动被拾取,而无需任何其他配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM