My module MyLibraryは、アーティファクトThirdPartyLibraryに依存しています。pomは推移的な依存関係を宣言する必要がありますか?
MyモジュールMyApplicationはMyLibraryに依存していますが、ThirdPartyLibraryのコードも直接呼び出します。
MyApplicationが明示的にThirdPartyLibraryをpomに依存するか、またはMyLibraryがそれを依存関係として含むかどうかに依存する必要がありますか?
My module MyLibraryは、アーティファクトThirdPartyLibraryに依存しています。pomは推移的な依存関係を宣言する必要がありますか?
MyモジュールMyApplicationはMyLibraryに依存していますが、ThirdPartyLibraryのコードも直接呼び出します。
MyApplicationが明示的にThirdPartyLibraryをpomに依存するか、またはMyLibraryがそれを依存関係として含むかどうかに依存する必要がありますか?
(現在のところ)別の直接の依存関係が同じ依存関係をアプリケーションに推移的に公開しても、アプリケーションが直接依存するすべての依存関係を宣言する必要があります。理由は:MyApplication
をMyLibrary
の将来のバージョンを使用するようにアップグレードすると、ThirdPartyLibrary
に依存しなくなりました。ThirdPartyLibrary
からMyApplication
への明示的な依存関係を追加するまで、あなたのコードは突然コンパイルに失敗します。これは、この依存関係がすべてそこにあったはずであることを意味します。
FYIのmaven-dependency-plugin
は、アプリケーションが宣言する依存関係を理解するのに役立つdependency:analyze
goalを非常に役立ちます。それは、MyApplication
のコードを見てMyLibrary
への依存を参照してください、そしてMyLibrary
が使用されているという警告を出しますが、宣言されていないでしょう。
[WARNING] Used undeclared dependencies found:
[WARNING] org.example:ThirdPartyLibrary:jar:1.0:compile
あなたのコードは直接明示的にそれを作るためにあなたのポンポンで依存関係を定義するよりも、ThirdPartyLibraryを使用した場合あなたはそれを使用することを明確に... – khmarbaise