pom应该声明传递依赖吗?

时间:2017-08-06 13:05:30

标签: maven maven-2

我的模块MyLibrary依赖于工件ThirdPartyLibrary。

我的模块MyApplication依赖于MyLibrary,但也直接调用ThirdPartyLibrary中的代码。

MyApplication是否应该明确地将ThirdPartyLibrary包含为pom中的依赖项,还是依赖于MyLibrary将其作为依赖项包含它的事实?

1 个答案:

答案 0 :(得分:3)

您应该直接声明应用程序所依赖的每个依赖项,即使(此时)您的另一个直接依赖项会向您的应用程序传递相同的依赖项。原因如下:如果您升级MyApplication以使用MyLibrary的未来版本(您不知道)不再依赖于ThirdPartyLibrary,您的代码将突然无法编译 - 直到您添加明确依赖ThirdPartyLibraryMyApplication。这意味着这种依赖应该始终存在。

仅供参考,maven-dependency-plugin有一个非常有帮助的dependency:analyze goal,它可以帮助您确定应用程序应声明哪些依赖项;它将查看MyApplication的代码,查看对MyLibrary的依赖关系,并发出警告MyLibrary已使用,但未声明:

[WARNING] Used undeclared dependencies found:
[WARNING]    org.example:ThirdPartyLibrary:jar:1.0:compile