Maven Dependencies与DependencyManagement的区别

1、 dependencies是引入依赖,在子项目中就算不写该依赖项,那么子项目仍然会从父项目中继承该依赖项
2、dependencyManagement是声明依赖,并不实现引入,子项目如果写了该依赖项,并且没有指定具体版本,就会从父项目中继承该项,如果声明了版本就不会继承
例如:
父pom

  <dependencies>
    <dependency>
      <groupId>log4jgroupId>
      <artifactId>log4jartifactId>
      <version>1.2.17version>
    dependency>
  dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>8.0.13version>
      dependency>
    dependencies>
  dependencyManagement>

父项目引入的依赖
Maven Dependencies与DependencyManagement的区别_第1张图片
可以看到我们的父项目中只有dependencies中的1.2.17版本的log4j,并没有引入dependencyManagement中的mysql-connector-java

子pom

  
  <parent>
    <artifactId>TestFatherartifactId>
    <groupId>com.fssxgroupId>
    <version>1.0-SNAPSHOTversion>
    <relativePath>../TestFather/pom.xmlrelativePath>
  parent>

  <dependencies>
    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
    dependency>
  dependencies>

子项目引入依赖
Maven Dependencies与DependencyManagement的区别_第2张图片
可以看到我们的子项目中没有声明log4j,但是却有父项目中的1.2.17版本的log4j,在我们声明了mysql-connector-java但是没有写版本号的时候使用了父项目dependencyManagement中的版本号,可用于统一管理项目依赖版本号,防止不同jar包之间因为版本发生冲突

你可能感兴趣的:(Java,Maven,java,maven,spring)