用Ant Java 6的注解处理配置 [英] Java 6 annotation processing configuration with Ant

查看:329
本文介绍了用Ant Java 6的注解处理配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个自定义的注解,它的处理器放大器; processorFactory。如何配置我的Ant构建文件这样:


  1. 注解处理器被应用在注释类,并产生内部发电机的文件夹

  2. 源文件
  3. 生成的源文件(从注释处理)可以通过在项目中的其他源文件中使用。



解决方案

这是不是pretty,但它是我做的。 (来源的javac Ant任务 javac的手册页)使用compilerarg属性,我可以在不直接通过使用javac Ant任务支持的注释处理相关的参数传递。

 < javac的SRCDIR =$ {src}字符串DESTDIR =$ {}班...>
     ....
     < compilerarg行= - processorpath $ {} processorpath/>
     < compilerarg行= - 处理器$ {}处理器/>
     < compilerarg行= - S $ {} whereToPutGeneratedClassFiles/>
< / javac的>

我不使用 APT工具因为文档状态


  

被告知,该公寓工具确实出现了JDK的框架的一个不稳定的一部分,所以可能会在未来的版本从根本上改变。尤其是,它很可能是过时的在JDK 6,它可以运行批注处理器,javac的一部分。


如果你真的不关心编译器指定参数时,你可以罐子您的注解处理器这样的

 <罐子destfile =$ {} annotationprocessorjar...>
     ...
     <服务类型=javax.annotation.processing.Processor供应商=$ {} your.annotation.processor.fully.qualified.name/>
< /瓶>

然后,你可以做

 < javac的...确保$ {} annotationprocessorjar在类路径>
 < / javac的>

I have a custom annotation and it's processor & processorFactory. How do I configure my Ant build file such that:

  1. The annotation processor is applied on annotated classes and generates source files inside "gen" folder

  2. The generated source files(from annotation processing) could be used by other source files in project.

解决方案

This is not pretty, but it is what I do. (Sources javac ant task javac man page) Using the compilerarg attribute I can pass in the annotation processing related arguments that are not directly supported by the javac ant task.

<javac srcdir="${src}" destdir="${classes}" ... > 
     ....
     <compilerarg line="-processorpath ${processorpath}"/>
     <compilerarg line="-processor ${processor}"/>
     <compilerarg line="-s ${whereToPutGeneratedClassFiles}"/>
</javac>

I do not use the APT tool because the documentation states

Be advised that the Apt tool does appear to be an unstable part of the JDK framework, so may change radically in future versions. In particular it is likely to be obsolete in JDK 6, which can run annotation processors as part of javac.

If you really don't care for compiler args, you can jar your annotation processors like this

<jar destfile="${annotationprocessorjar}" ... >
     ...
     <service type="javax.annotation.processing.Processor" provider="${your.annotation.processor.fully.qualified.name}"/>
</jar>

Then you can do

 <javac ... make sure ${annotationprocessorjar} is in classpath>
 </javac>

这篇关于用Ant Java 6的注解处理配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆