依存フィールドは、Mavenの中にあります。コンパイルし、提供、実行、システム、テスト、インポート
、コンパイル(デフォルト)
範囲が依存コンパイル時間である場合、パッケージの現在の依存性は、コンパイル時に接合され、パック(MVNパッケージ)時間的に結合されます。
有効範囲をコンパイルし、パッケージをコンパイルするときは、に参加します。
二、提供
範囲は、コンパイル時に提供される時間に依存し、試験有効な場合、パッケージ化(MVNパッケージ)を実行するときには参加しないであろう。、例えば、我々は、Webアプリケーションを開発し、コンパイル時に、我々は、サーブレット-api.jarをに依存する必要がありますが、我々はjarファイルパッケージを実行する必要はありません、ウェブサーバが提供するJARパッケージため、追加の時間ifとにパッケージそれは競合する可能性があります。この時点では、提供範囲を変更することが使用することができます。
三、システム
そして、同じことを提供しますが、依存関係のMavenのリポジトリから利用可能であるが、ローカルファイルシステムから取らないだろう、あなたはsystemPathプロパティを使用する必要があります。例えば:
< 依存性> < のgroupId > org.open </ のgroupId > < たartifactId >オープンコア</ たartifactId > < バージョン> 1.5 </ バージョン> < スコープ>システム</ スコープ> < systemPath > $ {BASEDIR} / WebContentを/ WEB -INF / libに/オープン-core.jar </ systemPath > </ 依存関係>
四、ランタイム
スコープは、実行時に依存します依存ランタイムがある場合は、コンパイル時には依存しません。例えば、コンパイル時に、私たちは、JDBC APIのjarパッケージは必要ありませんが、我々は、JDBCドライバパッケージを実行する必要がある場合。あなたは、実行時の変更を使用することができます。
五、テスト
時間は、テストの範囲に依存しているとき、それは彼らがこの依存関係を使用していないときにコンパイルおよびパッケージで、有効なテスト範囲を指します。
六、輸入
Mavenのマルチモジュールプログラム構造、親プログラムは、親、親プロジェクトから依存継承を定義し使用することができます。しかし、唯一の単一継承をMavenの、すなわちプロジェクトは、親プロジェクトを定義する1個の親タグを使用することができます。
maven2.9バージョンは新しい機能が導入された後、多重継承を実現することが可能に依存します。この機能は、分割することができる独立した複数のファイルの中に複雑なポンポンポンポンファイルを設定によって異なります。これらは、POM依存多重化されてもよいが、このような処理は、よりコンパクトなMavenのPOMを構成することができます。
例えば、我々はプロジェクト春の起動時間を開発している、POM、次のように存在します。
< 親> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータ親</ たartifactId > < バージョン> 1.3.3.RELEASE </ バージョン> </ 親>
アイテムは、サブモジュールの達人である場合は、それが問題になります。Javaの達人同様の単一継承するので、あなたは、<親> </親>タグは、今springbootを参照するために使用している親モジュールを参照するために使用され、衝突が発生した今、2人の親を持つことはできません。
依存関係の使用dependencyManagementの導入、およびscope属性は、インポートする:それソリューションです。次のように:
< dependencyManagement > < 依存性> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >スプリングブート依存性</ たartifactId > < バージョン> 2.1.6.RELEASE </ バージョン> < タイプ> POM < / タイプ> < スコープ>インポート</ スコープ> </ 依存> </依存関係> </ dependencyManagement > < 依存性> < 依存> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >春・ブート・スターター・ウェブ</ たartifactId > </ 依存関係> </ 依存関係>
注:インポート性の範囲は、依存関係の<dependencyManagement>のみを使用することができる別のPOMからインポート設定ファイルを表します。