2013-09-02 20 views
8

私は、さまざまなモジュールバージョンに多くの依存関係を持つマルチモジュールプロジェクトを持っています。現時点では、バージョンはハードコードされており、手動で変更する必要があります。だから私はそれらをすべてプロパティファイルに入れ、プロジェクトビルド中にプロパティ値を取得することに決めました。モジュールのpom.xmlのMaven:プロパティファイルからpom.xmlのプロパティを設定

module1.version=1.1 
module2.version=1.8 
module3.version=5.4 

例を

ルートのpom.xml

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
        <file>./version.properties</file> 
       </files> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

ファイルversion.properties:ここ

は、私はそれをしようとする方法です

<properties> 
    <module1.project.version>${module1.version}</module1.project.version> 
</properties> 

<parent> 
    <groupId>com.mymodule</groupId> 
    <artifactId>test</artifactId> 
    <version>${module1.version}</version> 
    <relativePath>../pom.xml</relativePath> 
</parent> 

ビルドで失敗します。

目標に org.codehaus.mojoの実行に失敗しました:ビルドヘルパーのmaven-pluginのを:1.7:解析-バージョンプロジェクトccm-上 (パース・バージョン)エージェント:実行解析バージョン のゴールorg.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version が失敗しました。 NullPointerExceptionが発生 - > [ヘルプ1] org.apache.maven.lifecycle.LifecycleExecutionException: に失敗しました。目標 org.codehaus.mojo実行:ビルドヘルパーのmaven-pluginの:1.7:解析-バージョン を(パース・バージョン)上プロジェクトccm-agent:実行解析バージョン のゴールorg.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version が失敗しました。

ファイルからいくつかのプロパティを読み込み、正しい方法でpom.xmlを構成するにはどうすればよいですか?

答えて

6

最後は非常に単純なようです。私はinitialize段階を使用しました。 validateに変更すると、問題が解決しました。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
+0

Maven 2または3を使用していますか? –

+0

Maven 3.0.4。私はそれが重要だと思いますか? – Dragon

2

<parent>要素内でプロパティ/変数置換を使用しないでください。

主な理由は、親POMがプロパティを定義する可能性があるため、Mavenは親POMを読み込んでからプロパティを展開できることです。

+0

例が正しくない可能性があります。しかし、例えばそれを依存関係で使うことができます。 – Dragon

+0

私は「要素の中でプロパティ/変数置換を使わないでください」と言った。依存関係はプロパティを変更できないため、まったく別の問題です。 –

+0

私は例で自分の過ちを理解しました。ありがとう。 – Dragon

関連する問題