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

ここで 2 つのオプションを提案します。

  1. Apache Velocity: 記述内容に近いテンプレート言語を提供します。ここで調べてください。あなたはおそらく彼らのエンジンに興味があるかもしれません.

  2. GWTP は、あなたがやりたいことと似たようなことをしているようです。アノテーション プロセッサを使用してコード生成を実行しているようです。これはプロセッサの例で、プロジェクトのホームはhereです。

于 2012-04-24T07:41:35.810 に答える
0

Acceleoを見てみましょう。これは XSL テンプレートに基づいてソース コードを生成します。これをEMFと共に使用して、ユーザーが設計したデータ モデルからソース コードを生成しました。

于 2012-04-24T07:40:26.047 に答える