2011-09-08 13 views
9

私はAnt webappプロジェクトをMavenに変換しています。私はそのほとんどが動作していますが、プロファイルに基づいてさまざまなソースからいくつかのリソースファイルをコピーする方法を理解しようとしています。Maven:プロファイルに基づいたリソースファイルをインクルード

私はsrc/main/resources/persistence-{dev, prod}.xmlです。これらのうちの1つは、warファイルにWEB-INF/classes/META-INF/persistence.xmlとして含める必要があります。

devプロファイルがアクティブな場合には、devバージョンをコピーし、prodがアクティブな場合はprodバージョンをコピーします。

+1

私はこのプラグインがファイルを含むか除外するだけで、それらをコピーして名前を変更することができないので、私はMavenリソースプラグインが彼の問題を解決するとは思わない。 – allaf

答えて

8

http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.htmlのようなmavenリソースプラグインを使用し、プロファイルにファイル名または拡張子のプロパティを設定してください。

+4

あなたの答えは、persistence.xmlファイルの名前変更については扱いません。 – mwalter

+5

異なるソースファイル名を使用するのではなく、リソースをロードする場所が異なるフォルダを持つことができます。ファイル名を変更する必要はありません。 –

+0

@ManfredMoser - 1つの永続性.xmlは適切な方法です。 – JimHawkins

6

3つの別々のpersistence.xmlファイルを持ち、選択的にコピーするというパラダイムに縛られていない場合は、このようなフィルタリングを使用してmavenプロファイルを使用できます(先日これを実装しました。 ):persistence.xmlで

<property name="hibernate.show_sql" value="${hibernate.debug}" /> 
<property name="hibernate.format_sql" value="${hibernate.debug}" /> 

のpom.xmlには、プロファイルを作成し、変数を定義:

<profiles> 
    <profile> 
    <id>hib-debug</id> 
    <properties> 
     <hibernate.debug>true</hibernate.debug> 
    </properties> 
    </profile> 
</profiles> 

はdefaulを定義します

<properties> 
    <hibernate.debug>false</hibernate.debug> 
</properties> 

と....あなたは、リソースのフィルタリングをオンにしてください:

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    </resource> 
</resources> 

その後、あなたはMVN -Phib-デバッグと出来上がりを構築するプロファイルを指定せずにビルドするときのためのトン!置換が行われます。

関連する問題