[解決済み] Maven の依存関係の解決 (コンフリクト)
質問
4つのプロジェクトがあるとします。
- プロジェクトA (BとDに依存している)
- プロジェクト B (D に依存している)
- プロジェクト C (D に依存)
- プロジェクト D
このシナリオでは、プロジェクト A を実行すると、Maven は依存関係を D に正しく解決します。私がこれを正しく理解した場合、Maven は常に最短パスで依存関係を取ります。D は A の直接の依存関係であるため、B 内で指定された D よりも、D が使用されます。
しかし、今、この構造を仮定します。
- プロジェクトA (BとCに依存している)
- プロジェクト B (D に依存している)
- プロジェクト C (D に依存)
- プロジェクト D
この場合、Dを解決するためのパスは同じ深さを持っています。何が起こるかというと、Mavenが競合を起こすということです。依存関係を除外するようMavenに指示することが可能であることは知っています。しかし、私の質問は、このような問題に対処する方法です。私は、現実の世界のアプリケーションでは、多くの依存関係があり、おそらく多くの競合もあります。
ベストプラクティスの解決策は本当にものを除外することなのでしょうか、それとも他に可能な解決策があるのでしょうか。いくつかのバージョンが変更され、Maven が異なる依存関係を取るようになったため、突然 ClassNotFound Exception が発生した場合に対処するのが非常に困難であることがわかります。もちろん、この事実を知っていれば、問題が依存関係の衝突であることを推測するのは少し簡単になります。
私は maven 2.1-SNAPSHOT を使用しています。
どのように解決するのですか?
このような状況を解決するための maven の方法は、"maven "ディレクトリの中に
<dependencyManagement>
セクションをプロジェクトのルート pom に含め、そこでどのバージョンのライブラリが使用されるかを指定します。
EDITです。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</dependencyManagement>
これで、依存関係によってどのバージョンのライブラリ foo:bar が要求されても、このプロジェクトとすべてのサブプロジェクトでは常にバージョン 1.2.3 が使用されることになります。
参照。
関連
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
Java の double データ型における 0.0 と -0.0 の問題
-
[解決済み] Servlet 3.0 API の Maven 依存関係?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Mavenプロジェクトにローカルのjarファイルを追加する方法は?
-
[解決済み] Mavenに最新バージョンの依存関係を使用するように指示するにはどうすればよいですか?
-
[解決済み] IntelliJのインスペクションで「シンボルを解決できない」と表示されたが、コードはコンパイルされる
-
[解決済み】Maven モジュール + 特定の単一モジュールのビルド
-
[解決済み】IntelliJ IDEAでMavenの依存関係をインポートする
-
[解決済み】MavenリポジトリでOracle JDBCドライバを検索する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
javaの非静的メソッドを静的に参照することができない
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
プロジェクトの依存関係を解決できない。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
SocketException java.netの4つの例外解決策。
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Java基礎編 - オブジェクト指向