Mavenの依存性や依存関係の競合配信

参考:HTTPS://blog.csdn.net/honghailiang888/article/details/53019635、https://www.cnblogs.com/LaiCuiTing/p/9542525.html

、Mavenの紹介

Mavenは、クロスプラットフォームのプロジェクト管理ツールです。主に作成するためにJavaプラットフォームに基づいたプロジェクト、依存関係の管理、およびプロジェクト情報の管理に役立つApacheのオープンソースプロジェクトの非常に成功組織と。

 

依存関係のルート要素の下にプロジェクトの依存関係は、依存関係を宣言するために、1つの以上の元素、1つまたは複数の項目を含むことができます。それぞれの依存は、要素が含ま含めることができます
のgroupId、たartifactIdとバージョン:基本的には基本的な座標、従属いずれかのために、従属座標が最も重要であり、Mavenはへの座標の依存性を見つける必要があります。
タイプ:依存型、商品包装に対応する座標によって定義されます。ほとんどの場合、要素は、jarファイルのデフォルトを宣言する必要はありません。
スコープ:依存の範囲は、以下の説明になります。
オプション:マークがオプションであるかどうかに依存。
除外:推移的依存関係除外するための
基本的な座標依存性宣言のほとんどが唯一含ま

 

の範囲に応じて2、

コンパイル時にMavenの主コードがコンパイル、プロジェクトの実際の動作は、クラスパスを使用するクラスパスの別のセットを使用するテストを実行する際に、クラスパスを使用する必要があります。

:依存範囲が依存三クラスパスとの関係(コンパイル・クラスパス、テストクラスパス、実行クラスパス)を制御するために使用されるMavenは次の範囲に依存有している
コンパイル:従属範囲をコンパイルします。指定しない場合、デフォルトでは、スコープに依存します。、テストをコンパイルするには、この依存レンジMavenの依存関係を使用して、三つのクラスパスの操作は有効です。典型的な例は、スプリングコア、コンパイル、テスト、および実行するために時間的に依存関係を使用する必要があります。
提供:依存範囲を提供しました。運転中にクラスパスをコンパイルし、テストするための効果的なこの依存範囲Mavenの依存関係を使用しますが、ありません。典型的な例は、コンパイル、サーブレットAPIであり、必要なときに依存している検査項目が、容器が提供されているので、プログラムは、実行されている場合、繰り返しのMavenを再度導入する必要はありません。
テスト:テストは範囲を依存しています。Mavenの依存関係のみがテストクラスパスに有効であるこの依存性の範囲を使用して、あなたは、コンパイルされたコードを使用することで、そのような信頼を使用するか、メインのプロジェクトを実行することができません。典型的な例は、それだけテストを実行するときにコンパイルとテストコードが要求される、JUnitのです。
レンジ依存ランタイム:ランタイム。この範囲に依存するMavenの依存CLASSPATH有効なテストおよび操作の使用ではなく、メインコードにコンパイルします。典型的な例は、試験を実施または実行するプログラムのみを上記特定のインタフェースJDBCドライバを達成する必要がある場合にのみ、設けJDK JDBCインターフェースを必要とするプロジェクトのメインコードをコンパイルし、JDBCドライバの実装です。
システム:システムは、範囲を依存しています。これはなく、動作中に、有効なCLASSPATHをコンパイルし、テストするため、示さ提供範囲と一致する範囲に依存して依存しています。ファイルがsystemPathが明示的に依存するパスシステムの範囲に依存する要素によって指定されなければならないことを除いて。このような信頼は、Mavenのリポジトリによって解決され、しばしばネイティブシステムと結合されていないため、非携帯型の構造をもたらすことができるので、注意して使用すべきである、systemPath要素は、環境変数を参照することができます。

3、推移的依存関係

推移的依存関係は、この機能の役割は、あなたがライブラリに依存するために必要なあなたの依存ライブラリを考慮する必要があるということである自動依存モジュールが導入されるに頼ることができるようになりますMaven2をに追加された新機能です。たとえば、私たちは図書館の春に依存しているが、何の推移依存関係は、我々は、プロジェクトの依存関係の春を理解して私たちのプロジェクトに自分自身を追加する必要がない場合は、スプリング自体は、依存関係を持っています。Springフレームワークを使用するときに推移的依存性のメカニズムを使用すると、不要な依存関係の導入を心配しないでください、それが何に依存するかを検討する必要はありません。Mavenは、それぞれ、現在のプロジェクトに導入された推移的依存関係を形成するのに必要なもの間接的に依存する、直接POMに依存解析します。

AがBに依存していると仮定し、BがCのために依存している、我々は、Aが直接依存Bへの最初であると言う、CにBをCにAは推移的依存性であり、第二に直接依存します。第一及び第二の直接の範囲は、直接依存範囲が伝送依存性の範囲を決定依存します。

左端の列は、直接依存性の第1の範囲を表し、一番上の行は、直接依存性の第二範囲、中間クロスセルの範囲を表し、依存を送信すると述べました。

コンパイル、テスト提供する実行時
コンパイルコンパイル--- ---ランタイム
テストテスト--- ---テストを
提供して設け---提供提供
ランタイムランタイム--- ---ランタイム

4.依存関係の原則

まず、1)最短パス:ジャーパッケージに依存している人に使用する最も近いです

A CはC-> B-> Aに達しています

C Bは、C-> B到着であります

例えば:

コモンズ-IO 2.4のバージョン

コモンズ-IO 2.0のバージョンB

C Bに依存し、BはAに依存します

Cバージョン2.0のJUnitのパッケージ

 

2)2つの経路が同じ時間の長さであれば?

2.1)異なるPOMで:

Aは、CはC-> Aに到達します

C Bは、C-> B到着であります

ポンポンファイルの依存関係にどのバージョンの前で働く2を参照してください使用することです

2.2)POMのあります:

後者は、以前に上書き


リライアンスの競合:

参考:https://segmentfault.com/a/1190000014938685?utm_source=tag-newest

おすすめ

転載: www.cnblogs.com/fxtx/p/11578837.html