依存性と推移依存関係のmaven

この記事では、元の本を読むための学習記録「Mavenの本当の」ブックキー知識ポイント、あまりにも欠陥や買収提案のない説明のためであります

まず、ポンポンのいくつかの要素の共通の解釈を投稿

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>my-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>my-demo</name>
    <packaging>pom</packaging>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <version>版本</version>
            <type>依赖的类型,对应于项目的packing,默认是jar</type>
            <scope>依赖范围</scope>
            <systemPath>配合 scope=system时使用</systemPath>
            <optional>标记是否为可选依赖</optional>
            <exclusions>
                用来排除传递性依赖
                <exclusion>

                </exclusion>
            </exclusions>

        </dependency>
    </dependencies>

</project>

前の文は、座標の種類に依存するように、我々は導入から依存性の範囲から開始し、ここで、理解しやすくする必要があります

従属範囲

いくつかの合計に依存Mavenの範囲

  • デフォルトのコンパイル、コンパイル、テスト、実行三つの状態のために有効です
  • 唯一のコードのテスト定義、テストの実行
  • とき、通常、コンパイルおよびテストが、無効な操作時に効果的に提供サーブレットAPIランタイムコンテナが提供します、
  • 効果的なテストとランタイムが、実行時のために、無効なコンパイル時間
  • 同じ範囲を提供しているシステムが、指定されたファイル・システムを介して、ディスプレイに依存しなければならない<systemPath>指定するためには、天然の結合と、それは大部分が未使用であります
  • dependencyManagementでのみを使用することができます3総輸入は、実質的な影響を持っていません。

次のように表現するテーブル

範囲 コンパイル テスト ラン
コンパイル
テスト
提供
ランタイム
システム

推移の依存関係

その後、当社のエンジニアリング、例えばBに依存して、依存関係としてだけではなく、使用されるほとんどのケースでは、我々は表しA-> B、A-> B、B-> C、そしてBにありますcは推移的依存性であるためしつつ、第1の依存関係は、Cに対するB、第二に依存しています

ルールを通過推移従属範囲、以下の表に関連する第依存及び第依存最初の列は依存最初を示し、最初の行に依存は秒を示し

コンパイル テスト 提供 ランタイム
コンパイル コンパイル ランタイム
テスト テスト テスト
提供 提供 提供 提供
ランタイム runtie ランタイム

表から、我々は簡単に情報のポイントを得ることができます

- 第二依赖为complie不改变第一依赖
- 第二依赖test不传递依赖
- 第二依赖provided只传递provided
- 第二依赖runtime对compile第一依赖的传递依赖是runtime

依存性調節

次のようにしばしば遭遇する問題は、それら全てが転写の存在に依存して、パッケージの異なるバージョンが存在することである
A-> B-> C-> X(1.0)
A-> B-> X(2.0)
達人によれば、時間、第一原理の依存性調節パッケージの2つの異なるバージョンが同じことを行う方法に依存している場合、いつ最短パスの規則では、Xパッケージバージョン2.0は、使用されていますか?この時間は、開始第2の原理を、あること、最初の戦略は、パッケージを選択すると宣言しなければならないため、宣言ポンポン、、。

オプションの依存関係

YのA-> B、B-> x及びB->任意の値がtrueで、パケットがする必要その後、所望のXまたはYを使用している場合、その後、xとyの依存性は、送信されないと仮定再依存で

おすすめ

転載: www.cnblogs.com/westlin/p/10988207.html