maven-dependency与dependencyManagement的区别


一般在项目的最顶层pom中才会看到dependencyManagement元素。
使用pom.xml 中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用这个dependencyManagement元素中指定的版本号。

  • 父工程创建好之后应该先mvn:install maven仓库,方便子项目使用

  • 统一管理,方便升级



    
      
      
        org.springframework.boot
        spring-boot-dependencies
        2.2.2.RELEASE
        pom
        import
      
      
      
        org.springframework.cloud
        spring-cloud-dependencies
        Hoxton.SR1
        pom
        import
      
      
      
        com.alibaba.cloud
        spring-cloud-alibaba-dependencies
        2.1.0.RELEASE
        pom
        import
      
      
        mysql
        mysql-connector-java
        ${mysql.version}
      
      
        com.alibaba
        druid
        ${druid.version}
      
      
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        ${mybatis.spring.boot.version}
      
      
        org.projectlombok
        lombok
        ${lombok.version}
      
    
  
  • dependencyManagement只是声明依赖,不会引入依赖,主要作用是:管理项目依赖
  • 如果dependencies里的dependency没有version元素,会寻找dependencyManagement标签里的依赖申明
  • 如果dependencies里的dependency有version元素,就使用dependency中的version元素
  • 子项目会全部继承夫项目中的dependencies元素
  • dependencyManagement只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项