2017-09-22 11 views
1

は、誰もが公式Mavenのドキュメントの「スコープの行列」に関する以下の、かなり明白な、質問への答えを知っているんください再訪:Mavenの依存関係のスコープ -

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

脚注はなぜセル説明索引付けされた[compile、compile]には値 "compile"が再び含まれます。私の意見で

、全く同じ引数には、次のことを意味します

  1. 細胞[コンパイル、提供]および[提供、提供]「提供」が含まれている必要があります両方。

  2. セル[test、provided]には "test"が含まれている必要があります。

なぜこれらのセルにはすべて " - "が含まれていますか? それは私には意味がありません...

すべての有益な提案を事前に感謝します!

答えて

0

providedは、鎮痛剤が容器によって提供されることを意味し、このスコープの使用は、手元の容器に依存することを意味する。

したがって、このスコープは、推移依存性ツリーの深いところではなく、「展開可能ユニット」(戦争、耳、スタンドアロンのジャー)のレベルで設定する必要があります。 したがって、依存関係に推移性を持たせることは有用ではありません。

代わりに、最高レベルのdependencyManagementでスコープを上書きして、コンテナによって提供されているそれらの依存関係を確実にマークすることができます。

+0

おかげで、私は確信していないが、申し訳ありません: は、次のような状況を考えてみます。 1.「コンテナアーチファクト」B「はコンテナアーチファクト」に依存C を(スコープは、「提供」、なぜ... 。 2. "私の工芸品" Aは "コンテナ工芸品" B (もちろん提供されているスコープ...) 3. AはBのクラスYを拡張するクラスXを含んでいます。 4. Y拡張CのクラスZ 5.XがZで定義された保護されたメソッドZmを呼び出す コンパイラは、たとえば、Zmの署名をチェックするためにこのクラスZの定義を必要とします。 [提供された、提供された]セルの " - "のために、クラスZは手元になく、エラーが発生します。 – Observateur

+0

私はこれを次のように見ています:Bは "ライブラリ"であり、依存関係として使用する必要があります。ライブラリは異なるコンテナ(またはコンテナなし)で使用できるため、依存関係を提供してはいけません。またはBは、戦争、耳、排除可能な瓶のような配備可能なユニットです。次に、必要な提供される依存関係を定義する必要がありますが、(アーティファクトAを含む)誰もそれを依存関係として使用するべきではありません。 –