maven 聚合工程中排除依赖为啥无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven 聚合工程中排除依赖为啥无效相关的知识,希望对你有一定的参考价值。
参考技术A 用exclusion就可以了maven的依赖和聚合
maven的继承:
maven工程之间,A工程继承B工程
B就是父工程
A就是子工程
本质上是A工程的pom.xml中的配置继承了B工程中的pom.xml的配置。
2、作用
在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本
场景:(微服务架构)
对一个大型的项目进行了模块拆分
一个project下面,创建了很多的module
每一个module都需要配置自己的依赖信息
原因:
在每一个module中各自维护各自的依赖信息很容易发生出入,不易统一管理
使用同一个框架内的不同jar包,他们应该是同一个版本,所以整个项目中使用的框架版本需要统一
使用的框架时所需要的jar包组合需要长期摸索和反复使用调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索
通过在父工程中为整个新项目维护依赖信息的组合即保证了整个项目使用的规范、准确的jar包;又能够将以往的讲演陈定下来,节约时间和精力。
版本号自己的工程里面没有写,默认读取父工程的版本号。
当前工程为父工程,它要去管理子工程,所以打包方式必须是pom
<packaging>pom<packaging>
<!--子工程的groupId如果和付工程一样,则可以省略-->
<groupId>com.seer-health</groupId>
<artifactId>seer-core-api</artifactId>
<version>1.0.1-SNAPSHOT</version>
<modules>
<module>pro01-module</module>
<module>pro02-module</module>
<module>pro03-module</module>
</modules>
<!--parent标签定义属性,版本号啥的-->
<property><property>
<!--parent标签给当前子工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.8.RELEASE</version>
<relativePath/>
</parent>
<!--父工程的packaging是pom标签-->
<packaging>pom</packaging>
<!--在父工程中同一管理以来信息-->
<!--注意;即使在父工程配置了对依赖信息的管理,子工程需要使用具体哪一个依赖还是要明确配置-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ll-pro01</groupId>
<artifactId>kussd-core</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
version:父工程定义了,子工程再写,就会覆盖掉父工程的版本号。
聚合:(部分和整体的关系就是聚合)
聚合好处:
一键执行Maven命令:很多构建命令都可以在“总工程”中一键执行
以man install命令为例:Maven要求有父工程时先安装父工程;有依赖的工程时,先安装被依赖的工程。我们自己考虑这些规则会很麻烦。但是工程聚合之后,在总工程执行mvn install可以一键安装,而且会自动按照正确的顺序执行。
配置聚合之后,各个模块工程会在总工程中展示一个列表,让项目中的各个模块一目了然。
父工程会生成子工程的modules(maven聚合)
<modules>
<module>pro01-module</module>
<module>pro02-module</module>
<module>pro03-module</module>
</modules>
以上是关于maven 聚合工程中排除依赖为啥无效的主要内容,如果未能解决你的问题,请参考以下文章
02-Maven高级-分模块开发依赖传递聚合继承(SpringBoot的部分底层原理)多模块开发(环境切换)Nexus私服搭建与使用