11

mvn リリース:準備

スナップショットの依存関係を解決するように常に求められます。mavenが関連するリリースを自動的に使用するように、バッチモードでこれを行う方法はありますか? つまり、依存関係が 1.0.0-SNAPSHOT の場合、この依存関係は自動的に 1.0.0 リリースに更新されますか?

[INFO] Checking dependencies and plugins for snapshots ...
There are still some remaining snapshot dependencies.: Do you want to resolve them now?     (yes/no) no: : yes
Dependency type to resolve,: specify the selection number ( 0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions ): (0/1/2/3) 1: : 1
Resolve Project Dependency Snapshots.: 'com.my.project' set to release? (yes/no) yes: : yes
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 0.0.2-SNAPSHOT
4

3 に答える 3

9

maven-release-pluginのドキュメントに従って、allowTimestampedSnapshotsを使用して、MavenがSNAPSHOTの依存関係チェックを無視するように構成できることに注意してください。

allowTimestampedSnapshots:

タイムスタンプ付きのSNAPSHOT依存関係を許可するかどうか。SNAPSHOTを見つけると、デフォルトで失敗します。

  • タイプ:ブール値
  • 以来:2.0-beta-7
  • 必須:いいえ
  • 式:$ {ignoreSnapshots}
  • デフォルト:false

または、以下のコマンドを実行するだけです。

mvn release:prepare -DignoreSnapshots = true

ただし、ほとんどの人が使用する規則であるため、最終リリースを実行する前に、すべてのSNAPSHOT依存関係を解決することをお勧めします。プロジェクトの依存関係(独自またはサードパーティのjar)を変更/アップグレードすると、バグや非互換性が発生してプロジェクトが破損する可能性があるため、リリースフェーズで自動的にバッチ処理するのではなく、開発フェーズで手動で行うことを常に検討する必要があります。これには通常、開発者の注意が必要です。最終リリースを行う前にそれらを修正します。

つまり、依存関係の解決は、リリースフェーズで実行する必要のあるタスクではなく、さらに、開発者の注意を払わずに自動的に実行する必要のあるタスクでもありません。

于 2012-07-14T02:13:52.933 に答える
5

リリース前に、 versions-maven-pluginを介して SNAPSHOT の更新を行うことができます。

于 2012-07-13T17:53:25.913 に答える
3

依存関係が自分のプログラムであり、そのライフサイクルがリリースしようとしているプログラムと密接に関連している場合は、マルチモジュール プロジェクトの使用を検討できます: http://maven.apache.org/guides/mini/guide-multiple- modules.html。Maven リリース プラグインは、すべての依存関係モジュールのバージョンを更新します。

そうでない場合は、おそらくすべきでないことをしている可能性があります。1.0.0-SNAPSHOT を 1.0.0 に変更しただけでは、アプリが引き続き動作することは保証されません。そのため、Maven がすべきとは考えていません。

その他の考慮事項

スナップショットは定義上、不安定なバージョンであるため、Maven リリース プラグインは、スナップショットの依存関係を使用しているかどうかを確認します。時期によって変動する場合がございます。つまり、今日機能していたものが明日機能しない可能性があるということです。

リリースとは、バージョンが安定していることを意味し、ビルドは変更なしでいつでも再現できます。スナップショット バージョンを使用すると、このアサーションは false になります。

そう、

于 2012-07-13T22:04:03.520 に答える