マルチモジュールプロジェクトがあります。
親POM(1.0-SNAPSHOT) |-module1(1.0-SNAPSHOT) |-module2(1.0-SNAPSHOT) `-module3( 1.0-SNAPSHOT)
Mvn release:prepareを実行すると、親POMにSNAPSHOTバージョンがあり、すべての依存モジュールにSNAPSHOTバージョンがないことを確認します。すべての子モジュールをスナップショットから次のリリースバージョンにどのように自動的に更新しますか?
すべてのモジュールのバージョンを自動的にインクリメントしたいと思います。
リリースプラグインはそれを処理できます。 POMバージョンの更新 を確認しましたか?しかし...私は何かを得ません。 POMのバージョンをx-SNAPSHOTから新しいバージョンに変更するおよびPOMのバージョンを新しい値に変更するy-SNAPSHOTrelease:prepare
リリースの準備 で説明されています。この目標を使用すると何が問題になりますか?
更新:autoVersionSubmodules
パラメーターが探しているものかもしれません。 リリースの準備 の例から:
マルチモジュールプロジェクト
プロジェクトの各モジュールのバージョン番号の入力を求められます。すべてのモジュールが親POMと同じバージョンを取得したい場合は、オプション
autoVersionSubmodules
をtrue
に設定できます。これで、リリースバージョンと次の開発バージョンが1回だけ求められます。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>x.y.z</version>
<configuration>
<goals>deploy</goals>
<autoversionsubmodules>true</autoversionsubmodules>
</configuration>
</plugin>
</plugins>
</build>
マルチモジュールプロジェクトを含むpomsバージョンを柔軟に設定する方法は、 Versions Maven Plugin です。
mvn versions:set -DnewVersion=your_new_version
マルチモジュールプロジェクトのすべてのPOMバージョン、親バージョン、および子バージョンを調整します。
それから
mvn versions:commit
または
mvn versions:revert
すべてのサブプロジェクトのバージョンが親のバージョンと同じであることを確認してください。
<groupId>com.xyz</groupId>
<artifactId>module-1</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>com.xyz</groupId>
<artifactId>xyz-parent</artifactId>
<version>1.0.123-SNAPSHOT</version>
</parent>
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>xyz-parent</artifactId>
<groupId>com.xyz</groupId>
<version>1.0.123-SNAPSHOT</version>
<packaging>pom</packaging>
<name>xyz-parent</name>
<dependencyManagement>
<dependencies>
<!-- Message -->
<dependency>
<groupId>com.xyz</groupId>
<artifactId>module-1</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.xyz</groupId>
<artifactId>module-2</artifactId>
<version>${project.version}</version>
</dependency>
</dependencyManagement>
</project>
別のpom.xmlを作成して、それらのプロジェクトをグループ化します。
<modules>
<module>../xyz-parent</module>
<module>../module-1</module>
<module>../module-2</module>
</modules>
次に、親プロジェクトのバージョンを更新し、以下のコマンドでビルドします。
mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT
mvn clean install
次に、これらのサブプロジェクトで定義されている親のバージョンをlatsetに更新します
mvn -N versions:update-child-modules
次に、それらを一緒にビルドします。
@echo on
cd .\xyz-parent
call mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT -o
call mvn versions:commit -o
call mvn clean install -o
:::http://www.mojohaus.org/versions-maven-plugin/examples/update-child-modules.html
cd ..\xyz-buildaggregate-ide
call mvn -N versions:update-child-modules -o
call mvn clean install -o
これは、明示的なバージョンをリストせずにサブモジュールpomの最上位レベルのpomを参照できないという事実の回避策です。 (これがバグMNG-624の目的です)バージョンの単一の場所(トップレベルのprofiles.xmlファイル)を持ち、すべてのpom.xmlファイル(つまり、 $ {currentVersion})
ただし、このスキームrelease:prepareでは、profiles.xmlはおそらく更新されません。