この記事では、元の本を読むための学習記録「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の依存性は、送信されないと仮定再依存で