ノート:
言及さLATEST
れたメタバージョンは、6年以上前に、「再現可能なビルドのために」Maven3RELEASE
のプラグイン依存関係のために削除されました。(通常の依存関係では引き続き完全に機能します。)プラグインの依存関係については、このMaven3準拠のソリューションを参照してください。
常に最新バージョンを使用したい場合、Mavenにはバージョン範囲の代わりに使用できる2つのキーワードがあります。使用しているプラグイン/依存関係を制御できなくなったため、これらのオプションは注意して使用する必要があります。
プラグインまたは依存関係に依存している場合は、バージョン値LATESTまたはRELEASEを使用できます。LATESTは、特定のアーティファクトの最新リリースまたはスナップショットバージョン、特定のリポジトリに最後にデプロイされたアーティファクトを指します。RELEASEは、リポジトリ内の最後の非スナップショットリリースを指します。一般に、アーティファクトの非特定バージョンに依存するソフトウェアを設計することはベストプラクティスではありません。ソフトウェアを開発している場合は、サードパーティライブラリの新しいリリースがリリースされたときにバージョン番号を更新する必要がないように、便宜上RELEASEまたはLATESTを使用することをお勧めします。ソフトウェアをリリースするときは、プロジェクトが特定のバージョンに依存していることを常に確認して、ビルドまたはプロジェクトが管理下にないソフトウェアリリースの影響を受ける可能性を減らす必要があります。
詳細については、MavenブックのPOM構文セクションを参照してください。または、依存関係のバージョン範囲に関するこのドキュメントを参照してください。
- 角括弧(
[
&]
)は「閉じた」(両端を含む)を意味します。
- 括弧(
(
&)
)は「オープン」(排他的)を意味します。
さまざまなオプションを示す例を次に示します。Mavenリポジトリでは、com.foo:my-fooには次のメタデータがあります。
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>com.foo</groupId>
<artifactId>my-foo</artifactId>
<version>2.0.0</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.1</version>
<version>1.1.1</version>
<version>2.0.0</version>
</versions>
<lastUpdated>20090722140000</lastUpdated>
</versioning>
</metadata>
そのアーティファクトへの依存が必要な場合は、次のオプションがあります(もちろん、他のバージョン範囲を指定できますが、ここに関連するものを表示するだけです)。
正確なバージョンを宣言します(常に1.0.1に解決されます):
<version>[1.0.1]</version>
明示的なバージョンを宣言します(Mavenが一致するバージョンを選択する場合、衝突が発生しない限り、常に1.0.1に解決されます)。
<version>1.0.1</version>
すべての1.xのバージョン範囲を宣言します(現在は1.1.1に解決されます)。
<version>[1.0.0,2.0.0)</version>
オープンエンドのバージョン範囲を宣言します(2.0.0に解決されます)。
<version>[1.0.0,)</version>
バージョンをLATESTとして宣言します(2.0.0に解決されます)(maven 3.xから削除されました)
<version>LATEST</version>
バージョンをRELEASEとして宣言します(1.1.1に解決されます)(maven 3.xから削除されました):
<version>RELEASE</version>
デフォルトでは、独自のデプロイメントがMavenメタデータの「最新」エントリーを更新しますが、「release」エントリーを更新するには、MavenスーパーPOMから「release-profile」をアクティブ化する必要があることに注意してください。これは、「-Prelease-profile」または「-DperformRelease=true」のいずれかを使用して実行できます。
Mavenが依存関係のバージョン(LATEST、RELEASE、およびバージョン範囲)を選択できるようにするアプローチでは、ビルド時間の問題が発生する可能性があることを強調する価値があります。これは、後のバージョンでは動作が異なる可能性があるためです(たとえば、依存関係プラグインが以前にデフォルトを切り替えた場合など)。 trueからfalseまでの値で、混乱を招く結果になります)。
したがって、一般的に、リリースで正確なバージョンを定義することをお勧めします。Timの回答が指摘しているように、maven -versions-pluginは、依存関係のバージョン、特にversions:use-latest-versionsおよびversions:use-latest-releasesの目標を更新するための便利なツールです。