2012-04-05 8 views
10

プロパティフィルタリングを使用するようにMavenプロジェクトを設定したときに、プロパティフィルタリングが非メイリングIntelliJの「make」でも機能しているように見えることがあります。つまり、Jetty/Tomcat/GWT/GlassfishのIntelliJ実行構成は、依然としてあなたのMavenリソースフィルタリングを尊重します。IntelliJのMavenフィルタリングサポートはどのように機能しますか?

私はpom.xmlにこれを追加するのであれば:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
       <include>**/persistence.xml</include> 
      </includes> 
     </resource> .... 

任意のIntelliJの実行構成を開始する前に、それは私の性質とperistence.xmlファイル内の任意のプロパティをフィルタリングする必要があります。これは、JDBC参照やファイルシステムのパラメータを交換するのに非常に便利です。

唯一の問題は、IntelliJがpom.xmlに他のディレクトリ(src/integrationtest/resourcesなど)の2番目のエントリを持つように変更しても、src/main/resourcesのフィルタリングを尊重するように思えることです。

これはすべて「自動」であるようです。だから、どのように動作しますか(どこにいても)どこで設定できますか?

答えて

2

IntelliJ IDEAのMake機能は、Mavenリソースをフィルタリングすることができます。ただし、IntelliJ IDEAはまだWebリソースのフィルタリングをサポートしていません。

ソース:http://www.jetbrains.com/idea/webhelp/maven.html#compile
全体のIntelliJのWebHelpでこのサポートについての詳細は、しかし、私はそれはMavenのプロセス・リソース・フェーズがするように動作するはずですね。

問題は、ディレクトリsrc/integrationtest/resourcesがMavenの規則に従わないという事実によって引き起こされる可能性があります。

  • テスト源としてsrc/integrationtestを尊重することsrc/test/resources/integrationtest/

または

  • のconfigure Mavenを作る(ただし、慣習、それをよく知られていないintegrationtestがされている場合: あなたがあれば多分それは動作しますメイヴンのCOCルールに違反する)

または

  • あなたはintegrationtest

の分離を強調したい場合に、別のMaven(サブ)モジュール、作るフィルタリングディレクトリについては異なるsrc/main/resourcesこと:フィルタリングsrc/main/webapp/META-INFは私のためにアウトオブボックスに働きました。
(Mavenの3.0.4、IntelliJの12.1.4)

2

グッドニュース、問題は13.1

http://youtrack.jetbrains.com/issue/IDEA-25934

EDITで修正される予定のようになります。十分に明確ではない、バグの場合であれば申し訳ありませんそれ以上の説明なしで「固定」とマークされたばかりです... しかし、私は13.1 EAPバージョン(ビルド134.1445)でテストしました。以前はIntelliJがリソースを上書きしていましたが、MavenでフィルタリングされたWebリソースはそのまま残っています。

+0

発行IDEA-25934での回避策はで私の作品追加: WEB-INF marstone

-1

<profiles> 
    <profile> 
     <id>development</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile> 
</profiles> 
0

のIntelliJ(私は14.1を使用しています)、デフォルトのプロファイルを定義することを忘れないでくださいあなたがアーティファクトのビルド時にプリ/ポスト処理などのカスタムAntタスクを定義することができません。

[プロジェクトの構造] - > [アーティファクト] - > {アーティファクトの選択} - > {前処理|後処理}タブに移動します。

ので、例えば、私はそれが箱から出して動作しない場合には、リソースのフィルタリングをシミュレートするために、次のような単純なタスクを使用することができます。

<target name="filter" depends="clean"> 
    <copy todir="${maven.build.dir}/${maven.build.finalName}"> 
     <fileset dir="${maven.build.resourceDir.0}"/> 
     <filterset begintoken="${" endtoken="}"> 
      <filter token="project.version" value="${project.version}"/> 
     </filterset> 
    </copy> 
</target> 
関連する問題