2011-04-20 10 views
0

にフィルタリングを有効にする正しい方法:Mavenの:このディレクトリ構造を考えてみましょリソースのサブセット

src/main/resources/ 
    resource1.properties 
    subdir/ 
     resource2.properties 

私はMaven filteringを受けることresource2.properties(とその兄弟)を必要とするのではなく、フィルタから他のすべてのリソースを除外します。

これは安全です。他のプロパティファイルには、置換されるべきではないトークン${xxx}が含まれている可能性があります。 targetにソースディレクトリ構造を保存する必要があります。最後に

、私は(のmaven-日食 - プラグインのeclipse:eclipseを破壊しないように)これを実現する唯一の方法はあると思われることがわかった:

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <excludes> 
      <exclude>subdir/**</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <!-- 'subdir' resources need placeholder substitution (ie: "filtering") --> 
     <directory>src/main/resources/subdir</directory> 
     <targetPath>${project.build.outputDirectory}/subdir</targetPath> 
     <filtering>true</filtering> 
    </resource> 
</resources> 

あなたは、これが複雑であると言うことができます潜在的には脆い。これは、Maven 2.2.1をmaven-eclipse-plugin v2.8(最新)で使用しています。これはthis old threadをリコール

[INFO] Request to merge when 'filtering' is not identical. Original=resource src/main/resources: output=target/classes, include=[], exclude=[subdir/**|**/*.java], test=false, filtering=false, merging with=resource src/main/resources: output=target/classes, include=[subdir/**], exclude=[**/*.java], test=false, filtering=true

:この問題を回避するには、ダウングレード(そこ働く上述の

他、わずかに少ない入り組んバージョンは次のようになめらかで文句のmaven-のEclipseプラグインの問題を引き起こしていますmaven-eclipse-pluginのv2.6まで)、これは関連するバグが修正済みとしてマークされているので、これはもはや必要ではありませんか?

これは、この程度

+0

-plugin ... – khmarbaise

+0

同意しますが、それは確かに独自の癖なしではありません;-)ここでの問題は、いくつかのチームメンバーがコマンドラインツールを使用してinsite ... – sxc731

+0

コマンドラインは非常に良いです。私はコマンドラインも好むが、もし私が日食を使っているなら、m2eclipseを使うともっと簡単に作業できる。 – khmarbaise

答えて

2

何...すぎユースケースをフェッチし、まだ私は苦労してるようには見えません。私はm2eclipseの代わりのmaven-日食を使用することをお勧め

<build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>false</filtering> 
     </resource> 
     <resource> 
     <directory>src/main/resources/subdir</directory> 
     <targetPath>${project.build.OutputDirectory}/subdir</targetPath> 
     <filtering>true</filtering> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     </resource> 
    </resources> 
    </build> 
+1

この@khmarbaiseありがとう。上記の私のソリューションとよく似ています。実際には、どちらも問題を共有しています。つまり、maven-eclipse-pluginのように、 ' $ {project.build.OutputDirectory}/subdir'を扱うことはできません。 '[INFO]システムパスを正規化しました:{0}埋め込みエラー:ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。 – sxc731

関連する問題