美文网首页
Maven中dependencies与dependencyMan

Maven中dependencies与dependencyMan

作者: 摩卡奇 | 来源:发表于2019-11-01 11:15 被阅读0次

1. dependencyManagement

Maven使用dependencyManagement元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素

好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果。因此,在顶层POM中定义共同的依赖关系。同时可以避免在每一个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

2. dependencies

相对于dependencyManagement,所有生命在dependencies里的毅力啊都会自动引入,并默认被所有的子项目继承。

3. 区别

  • dependencies
    即使在子项目中不写该依赖项,子项目仍然会从父项目中继承该依赖项(全部继承)

  • dependencyManagement
    只是声明依赖,并不实际导入,因此子项目需要显示的声明需要用的依赖。如果不再子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父POM;另外如果子项目中指定了版本号,那么会使用子项目中指定的版本。

例子:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!--MyBatis分页插件starter-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper-starter.version}</version>
            </dependency>
            <!--MyBatis分页插件-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
    </dependencyManagement>

参考文档:
https://www.jianshu.com/p/afba8648a531

相关文章

网友评论

      本文标题:Maven中dependencies与dependencyMan

      本文链接:https://www.haomeiwen.com/subject/odvtbctx.html