2017-01-10 5 views
3

を動作していませんtarget/test-classesディレクトリに移動し、自動的にp1の値を変更します。しかし、それは動作しません。リソースをコピーしますが、値は変更されません。Mavenのリソースは、プラグインのフィルタリング私は次のようでPOMを持っている

+0

あなたが本当にあなたに 'P1 = bbbbbb'を持っていますかプロパティファイル?あなたは 'p1 = $ {prop1}'を持つべきです。 – Tunaki

+0

申し訳ありませんが、プロパティファイルにその問題を修正しました。今私はp1 = $ {prop1}がありますが、それでも動作しません。 .propertiesファイルをそのままコピーします。 – fhcat

+0

私はmvn clean verifyを実行しています。 – fhcat

答えて

3

問題は、テストリソースの代わりにメインリソースを設定していることです。主リソースはresource要素で構成され、テストリソースはtestResource要素で構成されます。現在の設定では、src/test/resources以下のファイルはフィルタリングされたメインリソースとして扱われ、実際のテストリソースはフィルタリングされません。このため、コピーされたプロパティファイルtarget/test-classesの下にはフィルタが適用されません。あなたが探しているもの

は次のようになります。これにより

<testResources> 
    <testResource> 
    <directory>src/test/resources</directory> 
    <filtering>true</filtering> 
    </testResource> 
</testResources> 

src/test/resources下のファイルを濾過し、テストリソースとして扱われ、主なリソースはそのまま残されます。

1

mavenプロパティプラグインのcopy-resourcesゴールを使用すると、同様の問題が発生しました。リソースはコピーされましたが、プレースホルダは置き換えられませんでした。私にとっては、これは愚かな間違いのためでした - 私はearail mavenフェーズ(validate)のリソースをコピーし、後のフェーズ(initialize)にプレースホルダプロパティファイルを含めました...そのプロパティはまだ利用できませんでした。

私はinitializevalidateとプレースホルダを含めることにプロパティを含むの位相を変更し、すべてが正常に動作します。

私の作業の設定は以下の通りです

:プロパティの

含めると、検証でファイル:initialize

  <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>properties-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>read-project-properties</goal> 
         </goals> 
         <configuration> 
          <files> 
           <file>${project.basedir}/path/to/placeholders.properties</file> 
          </files> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

コピー資源:

<plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>copy-resources</id> 
       <!-- here the phase you need --> 
       <phase>initialize</phase> 
       <goals> 
        <goal>copy-resources</goal> 
       </goals> 
       <configuration> 
        <encoding>UTF-8</encoding> 
        <outputDirectory>${project.build.directory}/classes</outputDirectory> 
        <resources> 
         <resource> 
          <directory>${basedir}/path/to/directory/with/resources/to/copy</directory> 
          <filtering>true</filtering> 
         </resource> 
        </resources> 
       </configuration> 
      </execution> 
関連する問題