美文网首页

作者: 一滴矿泉水 | 来源:发表于2023-08-20 14:43 被阅读0次

    场景介绍

    项目存在多个子模块,而模块间又引入了相同的依赖项,为了项目的正确运行,避免依赖项版本冲突,又该如何管理依赖项,保证各模块依赖项版本号一致呢 ?

    一 、dependencyManagement 使用

    在我们项目顶层的 父pom文件中,我们会看到dependencyManagement元素。通过它来管理jar包的版本,让子模块中引用一个依赖而不用显示的列出版本号。子模块不指定依赖版本号时,maven会沿着子模块向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

    父 pom:

    <dependencyManagement>
       <dependencies>
          <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.5.3.1</version>
          </dependency>
       <dependencies>
    </dependencyManagement>
    

    子 pom:

    <dependencies>
       <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
       </dependency>
    </dependencies>
    

    二 、dependencies 使用

    相对于dependencyManagement,如果在父pom文件中通过dependencies引入jar,将默认被所有的子模块继承。
    子模块如果希望有自己个性化的内容,可以在子模块中对于其中的某个属性进重新定义。

    父 pom:

    <dependencyManagement>
       <dependencies>
          <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
             <version>3.1</version>
          </dependency>
      </dependencies>
    </dependencyManagement>
    

    子 pom:

    <dependencies>
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
           <version>3.2</version>
           <exclusions>
               <exclusion>
                  <groupId>com.alibaba</groupId>
                  <artifactId>fastjson</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
    </dependencies>
    

    三、区别

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

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

    参考链接:https://www.jianshu.com/p/afba8648a531

    文章持续更新中、希望对各位有所帮助、有问题可留言 大家共同学习

    相关文章

      网友评论

          本文标题:

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