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.4</spring-cloud.version>
 </properties>

 

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

 <dependencyManagement>
        <dependencies>

            <!-- SpringCloud 微服务 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
         </dependencies>
 </dependencyManagement>

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

    <dependencies>
        <!-- bootstrap 启动器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>

 

posted @ 2022-04-26 13:38  ExpectoPatronum—S  阅读(609)  评论(0编辑  收藏  举报