推移的な依存関係と依存関係のスコープ
Maven の依存関係は A->B、B->C のように推移的であり、A は間接的に C に依存します。これは依存関係の推移性であり、A は最初の直接依存関係です。 B への依存関係、B は C に対する 2 番目の直接依存関係、C は A の推移的な依存関係です。
通常の開発では、プロジェクトが spring-core に依存し、依存関係スコープがコンパイルされ、spring-core が commons-logging に依存し、依存関係スコープもコンパイルされる場合、プロジェクトには commons-logging の推移性があります。依存関係の範囲はコンパイルです。最初の直接依存関係のスコープと 2 番目の直接依存関係のスコープによって、推移的な依存関係のスコープが決まります。次の表を使用して説明します。この表の左端の列は最初の直接依存関係、一番上の列は 2 番目の直接依存関係です。中央で交差しているのは推移的な依存関係スコープです。
コンパイル |
テスト |
提供 |
ランタイム |
|
コンパイル |
コンパイル |
ランタイム |
||
テスト |
テスト |
テスト |
||
を提供 |
提供 |
|
提供 |
提供 |
Runtime |
Runtime |
Runtime |
例: 最初の直接依存関係スコープは Test で、2 番目の直接依存関係スコープはCompile の場合、推移的な依存関係の範囲は Test となり、この表に基づいて判断できます。
テーブルを注意深く見ると、次のパターンが見つかります:
2 番目の直接依存関係のスコープがコンパイルされるとき、推移的依存関係のスコープは最初の直接依存関係のスコープと一致します
。 2 番目の直接依存関係のスコープがコンパイルされている場合、2 番目の直接依存関係のスコープが test である場合、依存関係は渡されません
2 番目の直接依存関係のスコープが指定されている場合、そのスコープが指定されている依存関係のみが渡されます。最初の直接依存関係も渡され、推移的依存関係のスコープも提供されます
2 番目の直接依存関係のスコープが実行時の場合、推移的依存関係のスコープは最初の直接依存関係のスコープと同じです。依存関係 (コンパイルを除く) 現時点では、推移的な依存関係の範囲は実行時です。
以上がMaven 依存関係図の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。