姬長信(Redy)

java – 在Maven中创建依赖关系组以供重用 …


我是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部分,但之后我将不得不重新声明每个子项目中的每个依赖项(没有版本).

在避免上述问题的同时对依赖关系进行分组的正确/更好方法是什么?