2

在我的 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 文件存在)。

4

2 回答 2

0

看看Acceleo它是基于 XSL 模板生成源代码的。我将它与EMF一起使用,从用户设计的数据模型中生成源代码。

于 2012-04-24T07:40:26.047 回答
0

我会在这里建议两个选项:

  1. Apache Velocity:它提供了一种与您所描述的相近的模板语言。在这里查看。您可能会对他们的引擎感兴趣。

  2. GWTP 似乎做了一些类似于你想做的事情。看起来他们正在使用注释处理器来执行代码生成。这是一个处理器示例,他们的项目主页在这里

于 2012-04-24T07:41:35.810 回答