1

プラグインのバージョン: 2.0

親POMとすべてのモジュールのバージョンを設定するためにmaven-release-pluginを使用しようとしています。

次の親 POM を使用します。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>uk.co.mycompany</groupId>
    <artifactId>myProject</artifactId>
    <version>latest-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>My Project</name>

    <modules>
        <module>../../subPom1</module>
        <module>../../subPom2</module>
            <module>../../subPom3</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.0</version>
                <executions>
                    <execution>
                        <phase>clean</phase>
                        <id>set-release-versions</id>
                        <configuration>
                            <developmentVersion>1.1.8</developmentVersion>
                            <autoVersionSubmodules>true</autoVersionSubmodules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>

を実行mvn clean install -DskipTests -Pdeployすると、クリーン フェーズでプラグインを実行するための構成は完全に無視され、値「latest-SNAPSHOT」を使用してビルドが行われます。

プラグイン構成から値「1.1.8」を取得することを期待していました。

各子 POM は次と同等です。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>uk.co.mycompany</groupId>
        <artifactId>myProject</artifactId>
        <version>latest-SNAPSHOT</version>
        <relativePath>../../System/build/parentPom.xml</relativePath>
    </parent>

    ...

</project>

構成が無視されるのはなぜですか?

編集#1:要求されたファイルシステム構造:

/
 |- system
 |  |
 |  |- build
 |      |
 |      |-parentPOM file
 |
 |- business
 |     |
 |     | - childPOM1
 |     | - childPOM2
 |- client
 |     | - childPOM3
 |     | - childPOM4

SSCCE の .../... は無視してください。問題を一般的に説明するために、真の値を難読化しました。

編集#2:アドバイスどおりに定義を移動しまし<pluginManagement>たが、問題は同じままです(プラグインを使用せず、コンソールへのフィードバックはありません):

<pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.0</version>
                    <configuration>
                        <developmentVersion>1.1.8</developmentVersion>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
4

2 に答える 2

2

プラグインの目標を設定するのを忘れました。update-versions ゴールに必要なパラメーターを構成しましたが、クリーン フェーズでのみプラグインを実行するように Maven に指示しましたが、プラグインのどのゴールは実行しませんでした。したがって、それはまったく何もしません。

mvn clean を試すときに maven ログを確認すると、次のように表示されます。

[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ test ---

設定を次のように変更すると:

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0</version>
            <executions>
                <execution>
                    <phase>clean</phase>
                    <id>set-release-versions</id>
                    <goals><goal>update-versions</goal></goals>
                    <configuration>
                        <developmentVersion>1.1.8</developmentVersion>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

ゴール update-versions は、maven の clean フェーズで呼び出されます。

[INFO] --- maven-release-plugin:2.0:update-versions (set-release-versions) @ bdd ---

これですべての問題が解決するかどうかはわかりませんが、これにより、maven は期待どおりクリーン フェーズでプラグインを実行するようになります。

ただし、リリース プラグインは、バージョンを変更するためだけに使用する場合、多くの特別な設定 (scm 接続など) が必要です。したがって、versions-maven-pluginを使用することをお勧めします

 <build>
    <plugins>
        <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>set</goal>
                    </goals>
                    <phase>clean</phase>
                    <configuration>
                        <newVersion>1.1.8</newVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
于 2013-05-28T18:29:01.707 に答える