2017-08-06 3 views
3

My module MyLibraryは、アーティファクトThirdPartyLibraryに依存しています。pomは推移的な依存関係を宣言する必要がありますか?

MyモジュールMyApplicationはMyLibraryに依存していますが、ThirdPartyLibraryのコードも直接呼び出します。

MyApplicationが明示的にThirdPartyLibraryをpomに依存するか、またはMyLibraryがそれを依存関係として含むかどうかに依存する必要がありますか?

+2

あなたのコードは直接明示的にそれを作るためにあなたのポンポンで依存関係を定義するよりも、ThirdPartyLibraryを使用した場合あなたはそれを使用することを明確に... – khmarbaise

答えて

2

(現在のところ)別の直接の依存関係が同じ依存関係をアプリケーションに推移的に公開しても、アプリケーションが直接依存するすべての依存関係を宣言する必要があります。理由は:MyApplicationMyLibraryの将来のバージョンを使用するようにアップグレードすると、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 
関連する問題