我有一个 Maven 多模块 pom,它构建了一场战争。我想在父 pom.xml 中声明对 jsp-api 的提供范围依赖。Maven 文档建议声明为提供的依赖项不可传递,因此:
因此,我是否需要遍历所有子模块 pom 并声明提供的依赖项?项目中有大约 40 个模块,目前还不清楚哪些模块需要依赖项,所以这似乎需要付出很大的努力才能实现,而且我很懒。您在项目中如何处理这种情况?
- 编辑 -
因此,对于其他人来说,发生这种情况是因为父 pom 在 dependencyManagment 部分中定义了所有依赖项。我以前没有遇到过这种情况,但它有助于减少具有排除或其他重要属性的复杂依赖项的重复。它还覆盖继承机制。据我了解,一个好的经验法则是仅使用它来解决问题,而不是像该 pom 的作者所做的那样将所有依赖项都扔在那里。也许合适的 Maven 专家可以证实这一点。
即使提供的范围依赖关系不是可传递的,它们也可以被继承。也就是说,如果模块 A 具有提供的作用域依赖关系,而模块 B 具有对 A 的依赖关系,则模块 B 不会隐式具有提供的作用域依赖关系。但是,我相信如果模块 C 将模块 A 作为父 pom,它应该正常继承该依赖关系。
您可以通过mvn help:effective-pom在其中一个子 pom 上运行来验证此行为, effective-pom 目标应该为您提供运行它的 pom 的完全解析视图,考虑到继承,相当于 maven 在运行时实际使用的内容。如果<dependency>出现在那里(就像我的实验中那样),您应该只在父 pom.xml 中指定依赖项就可以了。
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |