使用 Ant 进行 Java 6 注解处理配置
我有一个自定义注释及其处理器和处理器工厂。如何配置我的 Ant 构建文件,以便:
注释处理器应用于带注释的类并在“gen”文件夹内生成源文件
生成的源文件(来自注释处理)可以被项目中的其他源文件使用。
I have a custom annotation and it's processor & processorFactory. How do I configure my Ant build file such that:
The annotation processor is applied on annotated classes and generates source files inside "gen" folder
The generated source files(from annotation processing) could be used by other source files in project.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这并不漂亮,但这就是我所做的。 (来源 javac ant 任务 javac 手册页) 使用compilerarg 属性我可以传入与注释处理相关的参数,这些参数不是直接的由 javac ant 任务支持。
我不使用 APT 工具,因为文档指出
如果你真的不关心编译器参数,你可以像这样打包你的注释处理器
然后你可以这样做
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.
I do not use the APT tool because the documentation states
If you really don't care for compiler args, you can jar your annotation processors like this
Then you can do
我发现其他一些示例有点令人困惑,因为某些关键位是无法解释的变量。这就是我最终得到的结果:
构建处理器 jar:
然后编译代码并运行处理器:
I found some of the other examples slightly confusing due to some of the key bits being unexplained variables. Here's what I ended up with:
to build the processor jar:
then to compile the code and run the processor:
以下是我在 eclipse/ant 中的做法:
注释
编译实际代码(使用或
没有生成的代码)。
Here's how I did it in eclipse/ant:
Notes
compile the actual code (with or
without the generated code).
你可以看看注释处理工具
,它会自动编译生成的源文件
//编辑//
回复您的评论:
您可以将 apt 与 apt ant 任务结合使用
但从 jdk6 开始,javac 工具提供 直接支持注释处理,因此您应该能够使用 javac ant 任务 编译器属性指定为“javac1.6”
you can take a look at the annotation processing tool
, it automatically compiles the generated sourcefiles
//EDIT//
In reply to your comment:
You can use apt in combination with the apt ant task
But as of jdk6 the javac tool provides direct support for annotation processing, so you should be able to use the javac ant task with the compiler attribute specified as "javac1.6"