Maven の第一人者コミュニティが次のタスクで私を助けてくれれば素晴らしいことです。
Hudson での Maven モジュールのリリース プロセスを、リリース プロセスがバッチ モードで実行されるように自動化したいと考えています (コンソールから何も要求する必要はありません)。現在、私は一般的な手順を使用していますrelease:prepare
(<preparationGoals>versions:update-parent clean verify</preparationGoals>
コミットする前に親を最新バージョンに更新する)+ release:perform
. ただし、Mavenに次のことをしてもらいたい:
準備段階のいつか:
groupId
現在のモジュールと親のに一致するすべての依存関係について-SNAPSHOT
、リリースされたバージョンに置き換えます (例:versions:use-releases -Dincludes=???
)。
リリース後のいつか:
groupId
現在のモジュールと親のに一致するすべての依存関係について、リリース バージョンをバージョンに置き換えます-SNAPSHOT
(例:versions:use-latest-snapshots ...
)。
例:
<parent>
<groupId>org.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
モジュールがタグ付けされる前は、次のように変換されます。
<parent>
<groupId>org.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.1</version>
</dependency>
リリースが成功すると、次のように変換されます。
<parent>
<groupId>org.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>
の混合が必要な気がします。
versions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
しかし、これを行う最善の方法が何であるかはわかりません。特に、可能な限りコミットを少なくするとよいでしょう。難しいのは、バージョン チェックのreparationGoals
後に実行されることです。-SNAPSHOT
説明されているプロジェクトは、親 POM が を介してその子を参照していないという意味で、マルチモジュール プロジェクトではありません<modules>
。SCM 構造は次のとおりです。
.
|
+-- myproject-parent
| +-- pom.xml
+-- myproject-api
| +-- pom.xml
+-- myproject-impl
+-- pom.xml
依存関係は次のとおりです。
myproject-api → myproject-parent
myproject-impl → myproject-parent
myproject-impl → myproject-api
プロジェクトの親 POM ( myproject-parent
) はめったにリリースされないため、最初にリリースされます。次にmyproject-api
(必要に応じて)、次にmyproject-impl
.