web-dev-qa-db-ja.com

Maven Pomのリポジトリ要素でのenabled(snapshot、releases)タグの使用とは何ですか?

リポジトリ要素を指定するときに、なぜ<snapshot><enabled>false/true</enabled></snapshot><releases/>も必要なのですか?

依存関係の特定のバージョンにどのように影響しますか? (1.2.3-スナップショット、1.2.3、1.2.3-リリース)

複数のリポジトリがある場合、どのリポジトリでアーティファクトが検索されますか?アーティファクトはどのように解決されますか?

11
Selva

リポジトリ要素を指定するときに、なぜfalse/trueが必要なのですか?

たとえば、リリースされたバージョン専用のリポジトリと、SNAPSHOTバージョン専用のリポジトリが必要な場合は、これを行う必要があります。

これは、エンタープライズMavenリポジトリー(つまり、Nexus、Artifactory、Archivia)の一般的な使用例であり、特定のバージョン(SNAPSHOTなど)がリポジトリー(デプロイされているが、例としてCIジョブ)でのみ使用可能であり、リリースされたバージョンのみが使用可能である場合別のリポジトリにあります。 PROD用に何かをリリースするCIジョブは、後者のリポジトリのみを使用する必要があります。SNAPSHOTバージョンを使用/許可したり、ビルドを中断したりしないでください(ビルドの再現性とグッドプラクティスを適用します)。

から 公式のMaven設定ドキュメント

releasessnapshots:これらは各タイプのアーティファクトのポリシーです。リリースまたはスナップショット。これらの2つのセットを使用すると、POMには、単一のリポジトリ内で他のタイプから独立して各タイプのポリシーを変更する機能があります。たとえば、おそらく開発目的で、スナップショットのダウンロードのみを有効にすることを決定する場合があります。

enabledtrueまたはfalseは、このリポジトリがそれぞれのタイプに対して有効かどうかを示します(releasesまたはsnapshots)。


複数のリポジトリがある場合、どのリポジトリでアーティファクトが検索されますか?アーティファクトはどのように解決されますか?

宣言の順序は、Mavenが使用するルックアップの順序に影響します。これを確認してください 公式Mavenチケット バージョン3.0以降の適切な動作の修正を提供します。

  • MNG-4400アーティファクトの解決中にsettings.xmlからのリポジトリの順序は尊重されません

依存関係の特定のバージョンにどのように影響しますか? (1.2.3-スナップショット、1.2.3、1.2.3-リリース)

宣言の順序と、どのリポジトリがどのタイプのアーティファクト(スナップショットかどうか)を許可するかに応じて、上記の2つの回答をマージします。


その他の参考資料:

13
A_Di-Matteo