10

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

これが私がそれをやろうとする方法です:

ルート 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

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

モジュール pom.xml の例

<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>

ビルドは次のエラーで失敗します:

プロジェクト ccm-agent でゴール org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version (parse-versions) を実行できませんでした: ゴール org.codehaus.mojo:build-helper- の実行 parse-versions maven-plugin:1.7:parse-version に失敗しました。NullPointerException -> [ヘルプ 1] org.apache.maven.lifecycle.LifecycleExecutionException: プロジェクト ccm-agent でゴール org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version (parse-versions) を実行できませんでした: ゴール org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version の実行 parse-versions が失敗しました。

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

4

2 に答える 2

2

<parent>要素内でプロパティ/変数置換を使用してはなりません。

ここでの主な理由は、親 POM もプロパティを定義する可能性があるため、プロパティの展開を開始する前に Maven が親 POM を読み取る必要があるためです。

于 2013-09-02T13:17:27.977 に答える