使用Ant进行Java 6注释处理配置

use*_*943 18 java ant apt annotations build

我有一个自定义注释,它是处理器和处理器工厂.如何配置我的Ant构建文件,以便:

  1. 注释处理器应用于带注释的类,并在"gen"文件夹中生成源文件

  2. 生成的源文件(来自注释处理)可以由项目中的其他源文件使用.

emo*_*ory 11

这不是很好,但这就是我的工作.(来源javac ant task javac手册页)使用compilerarg属性,我可以传入javac ant任务不直接支持的注释处理相关参数.

<javac srcdir="${src}" destdir="${classes}" ... > 
     ....
     <compilerarg line="-processorpath ${processorpath}"/>
     <compilerarg line="-processor ${processor}"/>
     <compilerarg line="-s ${whereToPutGeneratedClassFiles}"/>
</javac>
Run Code Online (Sandbox Code Playgroud)

我不使用APT工具,因为文档说明

请注意,Apt工具似乎确实是JDK框架的一个不稳定部分,因此在将来的版本中可能会发生根本变化.特别是它可能在JDK 6中已经过时,JDK 6可以将注释处理器作为javac的一部分运行.

如果你真的不关心编译器args,你可以像这样对你的注释处理器进行jar

<jar destfile="${annotationprocessorjar}" ... >
     ...
     <service type="javax.annotation.processing.Processor" provider="${your.annotation.processor.fully.qualified.name}"/>
</jar>
Run Code Online (Sandbox Code Playgroud)

那你可以做

 <javac ... make sure ${annotationprocessorjar} is in classpath>
 </javac>
Run Code Online (Sandbox Code Playgroud)

  • 我没有使用"服务",而是使用包含mypackage.MyAnnotationProcessor的META-INF/services/javax.annotation.processing.Processor创建了MyProcessor.jar.现在,当我在类路径中使用MyProcessor.jar编译源文件时,我收到此错误:"错误:错误的服务配置文件,或构造处理器对象时抛出的异常:javax.annotation.processing.Processor:找不到提供者mypackage.MyAnnotationProcessor" (2认同)