在我的Java应用程序中,我有一个类Foo
class Foo {
String field1;
String field2;
}
我想有一些生成的代码,它们在这个类的字段中使用反射 (虚构的模板语言)
#for each Field $f in Foo.class.getDeclaredFields()
#writeFile $f.java
public @interface $f {
}
最终目标是让Field1.java和Field2.java在每个内部只有一个简单的@interface定义。
是否有可用的模板语言可以作为Maven构建过程的一部分进行生成?
我能找到的最接近的是JET,但是这个项目似乎更倾向于生成Java源,以便在运行时可用,而不是在编译时。从理论上讲,我可以使用AntRun以及几个Javac和Java任务来完成这项工作,但这很麻烦。
我需要的实际用例是为Google Guice生成BindingAnnotations(将在GWT源中使用,因此它们必须在编译时以.java文件的形式存在)。
答案 0 :(得分:0)
答案 1 :(得分:0)
我会建议两个选项:
Apache Velocity:它提供的模板语言与您描述的内容非常接近。仔细研究here。你可能会对他们的引擎感兴趣。
GWTP似乎做了类似于你想要做的事情。看起来他们正在使用注释处理器来执行代码生成。这是processor example,他们的项目主页为here。