web-dev-qa-db-ja.com

Mavenバージョン管理のベストプラクティス

Mavenプロジェクトのバージョンを変更し、このバージョンをリリースしてから_*-SNAPSHOT_開発に戻るための最良の方法は何ですか。

現在、私は次のことをしています:

  • _pom.xml_から現在のバージョン(ほとんどの場合SNAPSHOTで)を取得します
  • バージョンに増分(_mvn -DnewVersion=<something> versions:set_)、質問で説明されているルールを尊重 パッチのMavenアーティファクトバージョン
  • _mvn:install_からレポに送信
  • SNAPSHOT後置記号を追加して、バージョンの名前を再度変更します。
  • 変更のコミット(バージョン管理システムを使用)

私は何か間違っていることや非効率的なことをしていると強く感じています。

61
shabunc

maven-release-plugin を使用して、アーティファクトをリリースする必要があります。自動的にリリースプラグインによってすべてのバージョンがインクリメントされます。例外は、1.0.3-SNAPSHOTから1.1.0-SNAPSHOTに移行する場合です。 Mavenを使用した開発のスケジュールは次のとおりです。

1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
1.0.1
1.0.2-SNAPSHOT
1.0.2
..

SNAPSHOTからリリースバージョンへのステップに進むには、mavenリリースプラグインを使用する必要があります。以下を使用するだけでアーティファクトをリリースできます。

最初の一歩:

mvn release:prepare 

最後のステップ:

mvn release:perform

デフォルトを受け入れたい場合は、次のように-Bを追加するだけです。

mvn -B release:prepare 

または、これらの手順を1つの手順にまとめることができます。

mvn -B release:prepare release:perform

上記は、CIソリューション内からも使用できます。

Mvn installの使用は、アーティファクトをローカルリポジトリにインストールすることのみを目的としています。リポジトリマネージャのような実際のものを使用している場合(これをお勧めします)、以下を使用する必要があります:

mvn deploy 

リリースプラグインを使用するための要件の1つは、pomでscmエリアを構成することです(バージョン管理を使用していることを望みますか?)。

71
khmarbaise

リリース段階をさらに制御したい場合、maven-release-plugin(mrp)はあまり役に立ちません。

その場合、 modified versions-maven-plugin を使用してバージョンをインクリメントし、SNAPSHOTサフィックスを追加/削除することもできます

これらの新機能のおかげで、mrpと同じことを行うスクリプトを作成できますが、各ステップを完全に制御できます。

たとえば、mrpは、変更されたバージョンをコミットしてから実際にビルドしようとします。ビルドが失敗した場合、そのコミットを元に戻す必要があります。SVNの場合は、別のrevert-commitを実行する必要があります。

注:私はインクリメント関数の元の作成者ではありません。 githubページに記載されているように、autoincrement-versions-maven-pluginから採用しました。

5
Petr Újezdský