2016-12-26 2 views
1

QAとProductionという2つのプロファイルを定義するマスターPOMファイルがあります。これはproperties-maven-pluginを使用して、あとでwildfly-maven-pluginがWebサーバーにパッケージを展開するために使用するいくつかの変数を設定します。このようなマスタと子のPOMのプロパティファイルを参照する方法

何か: [MASTER POM]

<profile> 
     <id>qa</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>properties-maven-plugin</artifactId> 
        <version>1.0.0</version> 
        <executions> 
         <execution> 
          <phase>initialize</phase> 
          <goals> 
           <goal>read-project-properties</goal> 
          </goals> 
          <configuration> 
           <files> 
            <file>../build-qa.properties</file> 
           </files> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

と子のPOM上:

<parent> 
    <groupId>fhng.apps</groupId> 
    <artifactId>fhng-build-all</artifactId> 
    <version>1.0</version> 
</parent> 
(...) 
<plugin> 
    <groupId>org.wildfly.plugins</groupId> 
    <artifactId>wildfly-maven-plugin</artifactId> 
    <version>1.1.0.Alpha11</version> 
    <executions> 
     <execution> 
     <phase>install</phase> 
     <goals> 
      <goal>deploy</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <hostname>${wildfly.server}</hostname> 
     <port>${wildfly.port}</port> 
     <username>${wildfly.username}</username> 
     <password>${wildfly.password}</password> 
     <filename>myapp.war</filename> 
    </configuration> 
</plugin> 

マスターPOMは、プロジェクトのルートに配置され、それぞれ特定のWebアプリケーションが配置されますサブフォルダ。これは、それぞれの特定のプロジェクトフォルダからmvn installを実行すると機能します。私は "mvn -Pqa clean install"をマスタのpomフォルダから実行したいと思っています。しかし、マスタpomが各プロジェクトから動作するが、明らかに親ディレクトリからは無効である\ build-qa.propertiesを参照するので失敗します。

これを解決する方法はどこですか?どのPOMが構築されているかにかかわらず、マスターPOMフォルダを基準にファイルを参照することは可能ですか?私は、このアプローチは、親パッケージが必ずしも私たちの作業ディレクトリに存在していてはならないという前提を壊していることを理解しています。

代わりに、プロパティファイルを親パッケージの成果物として参照する方法はありますか?そのため、mavenはリポジトリから親パッケージを取得し、その中のファイルを使用できますか?

また、親のpomの初期化/コンパイル/インストールフェーズを「スキップ」して、.propertiesファイルを読み込もうとしないようにすることもできます。

ありがとうございました!

+0

あなたは約4つのプロパティを使用しているようです。プロファイル 'qa'内の直接定義より外部ファイルを好むのはなぜですか? – michaldo

+0

ソース管理でWildfly管理インターフェイスの運用資格情報を必要としないためです。 – tggm

+0

mavenが呼び出される前に、本番の資格情報を持つプロパティファイルが作成されることが期待されます。ファイルに資格情報を書き込む代わりに、環境変数に資格情報を書き込んで '$ {env.wildfly.password}'を参照することもできます – michaldo

答えて

1

ルートフォルダにディレクトリ.mvn/を置く場合は、${maven.multiModuleProjectDirectory}

I現在のケースでルートフォルダを参照することができます。

<file>${maven.multiModuleProjectDirectory}/build-qa.properties</file> 

参考:http://takari.io/2015/03/20/mmp.html

PS。空のフォルダはgitにコミットしていないことを覚えておいてください。

関連する問題