maven引入依赖问题


dependencyManagement与dependencies区别

  dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;

      生效方式: 只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项 ,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

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

总结:

pom引入包进行良好的代码规划 会使得项目更容易维护,举例说明

    在cloud项目中,子项目都会用到spring-cloud-starter-bootstrap启动器。这就可以写到dependencies里,父层有,子一定会有。

            还有些不一定所有项目都用,但是需要统一版本的com.github.pagehelper插件,就可以在父级dependencyManagement声明,如果子有引用该插件,则可以不填写版本号,统一会用父级的。

一、划定版本 配置

 <properties>
        <spring-cloud.version>2020.0.4spring-cloud.version>
 properties>

二、声明依赖  此标签内的只是声明,子并不会有引用

 <dependencyManagement>
        <dependencies>

            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
         dependencies>
 dependencyManagement>

三、引用依赖  此标签引用 子项目也一定会有

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-bootstrapartifactId>
        dependency>
    dependencies>