私の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ファイルとして存在する必要があります)。