我是Maven的新手,正在建立我的第一个maven项目.我还以一些pom的形式创建了一些maven资产,这些pom可以在任何未来的项目中继承或用作依赖项.我想将依赖项组合在一起,并能够根据需要有选择地将它们添加到项目中.
我读了关于pom最佳实践的this article.我喜欢将相关依赖项组合到poms中然后根据需要将pom作为依赖项添加到项目中的想法.这种方法适用于编译范围的依赖项.但是,对于提供的作用域,它会失败,因为作为传递依赖,它们会被省略.
这是我的意思的一个例子:让我说我将我的项目的Web依赖关系组合到一个web-deps pom.xml中.这些包括编译范围的spring框架依赖项以及提供的范围javaee:
4.0.0
com.xyz
mvn-web-deps
0.0.1-SNAPSHOT
pom
org.springframework
spring-web
${org.springframework.version}
org.springframework
spring-webmvc
${org.springframework.version}
javaee
javaee-api
${javaee.version}
provided
然后我将此pom添加为另一个项目中的依赖项:
4.0.0
com.xyz
project-a
0.0.1-SNAPSHOT
com.xyz
mvn-web-deps
0.0.1-SNAPSHOT
pom
mvn-web-deps中的依赖关系现在变得具有传递性.由于上面的依赖项引用是编译范围的,因此省略了提供的传递依赖项.
我想避免将它们添加到父项的依赖项部分,因为只能有一个父项,而项目可能只需要其中一些依赖项组,而不是全部.我可以将它们添加到dependencyManagement部分,但之后我将不得不重新声明每个子项目中的每个依赖项(没有版本).
在避免上述问题的同时对依赖关系进行分组的正确/更好方法是什么?