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>