2013-01-09 14 views
6

現在、私はMavenを使ってフィルタリングのこの種を行う方法を知っている:JavaアノテーションのMaven-properties-filtering-like?

のpom.xml

<properties> 
    <foo>bar</foo> 
</properties> 

app.properties

foo=${foo} 

しかし、それは行うことが可能ですそのようなフィルタリングは、Maven、Spring、または他のツールを使用していますか?

MyClass.java

@MyAnnotation("${foo}") // ${foo} should get replaced at compile time 
public void getData() { 
    return data; 
} 
+0

ソースファイルでMavenリソースフィルタリングをgenerate-sourcesフェーズで使用することができます。*ソースファイル以外のディレクトリ(使用/リソースは使用しない方が良い)の* .javaファイルを生成し、生成されたファイルにコピーしますsourcesディレクトリ – radai

+0

これは、あなたの注釈が1つのためのSOURCE保存ポリシーを持つ必要があることを意味します。そしてあなたはブートするためにソースコードにパッチを当てたいのですか?幸運:p – fge

答えて

7

あなたはリソースプラグインの実行を使用してみましたが。私の知っている限り、あなたのJavaソースでそれを指すことができ、通常のフィルタリングを使用することができます。

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

<properties> 
    <my.name>chad</my.name> 
    <java.property>//comment</java.property> 
    </properties> 

    <build> 
    <sourceDirectory>target/processed-source/java</sourceDirectory> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 

     <resource> 
      <directory>src/main/java</directory> 
      <filtering>true</filtering> 
      <targetPath>../processed-source/java</targetPath> 
     </resource> 
    </resources> 

    </build> 

ので、まず最初に、あなたがルートターゲットディレクトリ内の特別なフォルダに加工Javaソースをということです。次に、フィルタリングされていないソースをコンパイルしないようにコンパイラプラグインを再構成し、代わりに新しいソースをコンパイルする必要があります。注意すべきことは、すべてのものがそうであるように、あなたはこれ以上多くを構成できることに注意してください。

このblog entryは便利です。

+0

ありがとう、私は 'targetPath' Maven属性を指定しても、私はそれを動作させることはできません。実際、* .javaソースファイルを使ってみたことはありませんでしたが、実際の例はありますか? – sp00m

+0

);私の設定を追加します。 – chad

+0

素晴らしい、ありがとう! – sp00m

関連する問題