Maven Guruコミュニティが次のタスクを手伝ってくれれば素晴らしいと思います。リリース+バージョンのプラグインでリリース手順を完全に自動化
リリースプロセスがバッチモードで実行されるように、HudsonのMavenモジュールのリリースプロセスを自動化したいと思います(コンソールから何か質問する必要はありません)。現在私は共通のステップrelease:prepare
を使用しています(コミットする前に最新バージョンの親に更新する場合は<preparationGoals>versions:update-parent clean verify</preparationGoals>
)+ release:perform
。調製工程中に
Somewhen:しかし、私は次の操作を行うためにMavenを希望、現在のモジュールと親のgroupId
に一致するすべての依存関係のために
- リリースされたバージョンで
-SNAPSHOT
を置き換える(例えばversions:use-releases -Dincludes=???
を) 。リリース後
Somewhen:現在のモジュールと親のgroupId
に一致するすべての依存関係について
- 、
-SNAPSHOT
バージョン(例えばversions:use-latest-snapshots ...
)とリリースバージョンを置き換えます。
例:私はそれのように感じる
<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>
:
<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.0-SNAPSHOT</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
がに変換されます
の混合物が必要ですversions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
しかし、これを実行する最善の方法はわかりません。できるだけコミットを少なくするのが良いでしょう。難点は、-SNAPSHOT
のバージョンチェック後に実行されることです。
親プロジェクトが<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
。
私はあなたに同意できません。私たちはフラットなモジュール構造を持っています:これはハドソンでそれらを分割して独立させる唯一の方法です(そうでなければ、サブモジュールのテスト失敗はプロジェクト全体のビルドに失敗します)。一部のモジュール(親のPOMなど)はほとんど変更されません。リリースする必要はありません。他のもの(「モデル」など)は数回リリースされます。 2つのマルチモジュールプロジェクトの間に依存関係があると、あなたの助言はうまくいきません。また、マルチモジュールビルドであっても、私は 'release:prepare'が' -SNAPSHOT'の依存関係を ''将来のリリース ''バージョンに置き換えるという証拠はありません。 –
まず、テストが失敗した場合は、ビルド全体が失敗する場合は何かが間違っているといいでしょう。質問はなぜあなたがハドソンで分かれているのが好きですか?これはマルチモジュールビルドであるか、それともマルチモジュールビルドではありません。さらに、親がpomがまれにしか変更されていない場合は、別のモジュールになる可能性があります。独自のリリースサイクルがあり、それを解放する必要があります。モジュール間に依存関係がある場合、マルチモジュールビルドでは何が完璧に機能するのでしょうか。 https://github.com/khmarbaise/javaeeを例に見てみることをお勧めします。 – khmarbaise
_最初にテストが失敗したら良いと言えるでしょう何かが間違っているためビルド全体が失敗するでしょう_ いつも便利なわけではありません。私たちのプロジェクトでは、小さなグループの開発者が独自のモジュールで作業します。各モジュールには、ビルドが失敗したときに電子メールを送信するための電子メール通知リストがあります。したがって、 'X'と' Y'は 'A'と' B'モジュールを担当しています。 –