我的模块MyLibrary依赖于工件ThirdPartyLibrary。
我的模块MyApplication依赖于MyLibrary,但也直接调用ThirdPartyLibrary中的代码。
MyApplication是否应该明确地将ThirdPartyLibrary包含为pom中的依赖项,还是依赖于MyLibrary将其作为依赖项包含它的事实?
答案 0 :(得分:3)
您应该直接声明应用程序所依赖的每个依赖项,即使(此时)您的另一个直接依赖项会向您的应用程序传递相同的依赖项。原因如下:如果您升级MyApplication
以使用MyLibrary
的未来版本(您不知道)不再依赖于ThirdPartyLibrary
,您的代码将突然无法编译 - 直到您添加明确依赖ThirdPartyLibrary
到MyApplication
。这意味着这种依赖应该始终存在。
仅供参考,maven-dependency-plugin
有一个非常有帮助的dependency:analyze
goal,它可以帮助您确定应用程序应声明哪些依赖项;它将查看MyApplication
的代码,查看对MyLibrary
的依赖关系,并发出警告MyLibrary
已使用,但未声明:
[WARNING] Used undeclared dependencies found:
[WARNING] org.example:ThirdPartyLibrary:jar:1.0:compile