MAVEN 依赖版本管理

前言

项目变大都一般都是用maven划分成多模块,若多个模块都有同一个依赖,需要使用来规定版本

  1. 父模块如何管理子模块依赖
  2. 子模块如何使用自定义的依赖版本
  3. dependencyManagement是否可以继承是否可以覆盖
  4. 如何使用其它pom的依赖管理

如何使用


    
        
            com.zolvces
            test-print
            
            1.2-SNAPSHOT
        
    

内的依赖并不会真实导入依赖,只是规定了如果 存在groupId和artifactId相同的dependency,内的dependency可以不用写版本号,而是用内规定的版本号,所以内必须写版本号,不然会报错

用例说明

在本地maven仓库install了这样一个依赖,分别有1.0,1.1,1.2版本


    com.zolvces
    test-print
    1.0-SNAPSHOT

在test-print内有一个打印版本的类

MAVEN 依赖版本管理_第1张图片

新建一个名位multi的项目有两个模块,每个模块都依赖test-print,并调用它的show方法打印所依赖的版本

 com.zolvces
    multi
    1.0-SNAPSHOT

    pom

    
        multi-one
        multi-two
    

父模块如何管理子模块依赖

在父pom文件内添加依赖管理


    
        
            com.zolvces
            test-print
            1.0-SNAPSHOT
        
    

子模块的依赖


    
        com.zolvces
        test-print
    

子模块打印的版本号都为 1.0-SNAPSHOT

由此可见父模块通过dependencyManagement规定了子模块的版本号

子模块如何使用自定义的依赖版本

有一种需求就是父模块规定好了某个依赖的版本,但是子模块因为各种原因需要不同的版本号该怎么办,很简单,如果子模块需要自定义依赖的版本只需要在引入依赖的时候指明版本号就可以

父pom的依赖管理如下


    
        
            com.zolvces
            test-print
            1.0-SNAPSHOT
        
    

子模块引入test-print并指明版本号


    com.zolvces
    test-print
    1.1-SNAPSHOT

子模块打印的版本号为1.1-SNAPSHOT

所以子模块想要使用别的版本只需要在引入的时候指定版本号就行

dependencyManagement是否可以继承是否可以覆盖

那么当子模块的pom文件里也规定dependencyManagement又是什么情况

父pom的依赖管理如下


        
            
                com.zolvces
                test-print
                1.0-SNAPSHOT
            
        
    

子模块pom如下


        
            com.zolvces
            test-print
        
    

    
        
            
                com.zolvces
                test-print
                1.2-SNAPSHOT
            
        
    

子模块运行打印的版本号是1.2-SNAPSHOT

可见子模块的dependencyManagement覆盖了父pom里的dependencyManagement(相同的依赖才会覆盖,并不是使父pom里面的所有依赖管理都失效)

那么如果这种情况下子模块依赖里添加版本号会怎么样呢,子模块添加依赖的版本号,如下


        
            com.zolvces
            test-print
            1.1-SNAPSHOT
        



    
        
            com.zolvces
            test-print
            1.2-SNAPSHOT
        
    

打印的版本号是1.1-SNAPSHOT

所以版本选择的顺序是

  1. 依赖里直接指定版本号

  2. 当前pom的里指定的版本号

  3. 父pom的里指定的版本号

如何使用其它pom的依赖管理

当子模块想要构建springBoot的时候,已近继承了父pom不能继承spring-boot-starter-parent,只需要导入springBoot

的依赖管理就行,如下


    more-part
    com.zolvces
    1.0-SNAPSHOT

4.0.0

core


    
        org.springframework.boot
        spring-boot-starter
    



    
        
            org.springframework.boot
            spring-boot-dependencies
            2.1.0.RELEASE
            pom
            import
        
    

注意

import只能在 内使用

同理pom1里想要使用pom2的依赖管理只需要把pom2 impor导入就行。

你可能感兴趣的:(MAVEN 依赖版本管理)