springCloud中dependencyManagement、type、scope在父模块和子模块分别的作用

本文探讨了Spring Cloud项目中dependencyManagement在父模块和子模块中的作用,以及maven依赖的scope选项。dependencyManagement在父模块用于声明依赖,但子模块需显式指定依赖并可能覆盖版本。子模块自身使用dependencyManagement是为了多继承解决maven单继承问题。scope选项包括compile、test、runtime、provided和system,以及import类型用于多继承。
摘要由CSDN通过智能技术生成

Spring Cloud项目一般会搭建为Mavne多模块项目,常见到dependencyManagement,存在两种情况

一、在父项目中的dependencyManagement,它是对所依赖jar包进行声明依赖,继承该父项目的子项目,不会直接引入dependencyManagement管理的jar包。因此子项目需要显式的声明需要用的依赖,并且没有指定version,才会从父项目中继承该依赖,这时version和scope都读取自父pom;

如果子项目中指定了版本号,那么会使用子项目中指定的jar版本.;

如果不在子项目中声明依赖,是不会从父项目中继承下来的;

而不包含在dependencyManagement中的dependencies中的依赖,即使在子项目中不写该依赖项,仍然会从父项目中继承该依赖项(全部继承)

如下

<!-- 会实际下载jar包,子项目会继承这些依赖  -->  
<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-devtools</artifactId>
       <scope>runtime</scope>
       <optional>true</optional>
   </dependency>
   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <optional>true</optional>
   </dependency>
</dependencies>

<!-- 只是对版本进行管理,不会实际引入jar,子项目继承时必须显示声明,才会引入该依赖  -->
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.mybatis.spring.boot</groupId>
           <artifactId>mybatis-spring-boot-starter</artifactId>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值