[解決済み] Mavenに最新バージョンの依存関係を使用するように指示するにはどうすればよいですか?
質問
Mavenでは、依存関係は通常このように設定されます。
<dependency>
<groupId>wonderful-inc</groupId>
<artifactId>dream-library</artifactId>
<version>1.2.3</version>
</dependency>
さて、頻繁にリリースされるライブラリを扱う場合、常に <version> タグを更新するのは、やや煩わしいことです。Mavenに、常に(リポジトリから)利用可能な最新バージョンを使用するように指示する方法はありますか?
解決方法は?
注意
記載されている
LATEST
と
RELEASE
メタバース
は削除されました
プラグイン依存の場合
は、Maven 3 で "再現可能なビルドのために"。
6年以上前のことです。
(通常の依存関係については、今でも全く問題なく動作します)。
プラグインの依存性については、こちらを参照してください。
Maven3対応ソリューション
.
常に最新バージョンを使用したい場合、Mavenにはバージョン範囲の代わりとして使用できる2つのキーワードがあります。これらのオプションは、使用しているプラグイン/依存関係をもはや制御できないので、注意して使用する必要があります。
<ブロッククオートプラグインや依存関係にあるものを利用する場合、LATESTまたはRELEASEというバージョン値を使用することができます。LATEST は、特定のアーティファクトの最新のリリース版またはスナップショット版、特定のリポジトリに最も最近デプロイされたアーティファクトを指します。RELEASE は、リポジトリ内の最後の非スナップショットリリースを指します。一般に、特定のバージョンでないアーティファクトに依存するソフトウェアを設計することは、ベストプラクティスではありません。ソフトウェアを開発している場合、サードパーティ製ライブラリの新しいリリースが出たときにバージョン番号を更新する必要がないように、便宜上RELEASEまたはLATESTを使用するとよいでしょう。ソフトウェアをリリースする際には、自分のプロジェクトが特定のバージョンに依存していることを常に確認し、自分の管理下にないソフトウェアのリリースによって、ビルドやプロジェクトが影響を受ける可能性を減らす必要があります。LATESTとRELEASEは、なるべくなら慎重に使用してください。
をご覧ください。 MavenブックのPOMシンタックスセクション をご覧ください。または、以下のドキュメントを参照してください。 依存関係のバージョン範囲 である。
-
角括弧(
[
&です。]
は閉じた状態(含む)を意味する。) -
括弧(
(
&です。)
) は、quot;open" (排他的) を意味します。
以下に、さまざまなオプションを説明する例を示します。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>
明示的なバージョンを宣言します(衝突が発生しない限り、常に1.0.1に解決され、その場合Mavenは一致するバージョンを選択します)。
<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 メタデータの "latest" エントリを更新しますが、"release" エントリを更新するには、"release-profile" を MavenスーパーPOM . これは "-Prelease-profile" または "-DperformRelease=true" のいずれかで行うことができます。
Mavenが依存関係のバージョン(LATEST、RELEASE、およびバージョン範囲)を選択できるようにするすべてのアプローチは、後のバージョンが異なる動作をする可能性があるため、ビルド時間の問題の可能性があることを強調する価値があります(たとえば、依存関係プラグインは以前にデフォルト値を真から偽に切り替え、混乱した結果をもたらしました)。
したがって、一般に、リリースにおいて正確なバージョンを定義することは良いアイデアです。例えば ティムからの回答 が指摘するように maven-versions-plugin(メイヴン・バージョンズ・プラグイン は依存関係のバージョンを更新するのに便利なツールで、特に バージョン:use-latest-versions と バージョン:最新のリリースを使用する の目標を設定します。
関連
-
Javaクラスローダーにソースコードから潜り込む
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] Mavenプロジェクトにローカルのjarファイルを追加する方法は?
-
[解決済み] mavenの強制アップデートを行うには?
-
[解決済み] Mavenがリポジトリの依存関係を更新したかどうかをチェックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
プロローグでのコンテンツは禁止されています
-
プロジェクトの依存関係を解決できなかった 解決
-
JQuery DataTable 详解
-
java 例外。Javaツールの初期化
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
ローカルリソースのロードが許可されていない場合の解決策
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策