1.Maven 工程继承关系
1.继承概念
Maven 继承是指 Maven 的项目中,让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享统一配置信息,简化项的管理和维护工作。
2.继承作用
在父工程中统一管理项目中的依赖信息。
它的背景是:
对一个比较大型的项目进行了模块拆分。
一个 project 下面,创建了很多个 module
每一个 module 都需要配置自己的依赖信息。
它背后的需求是:
在每一个 module 中各自维护各自的依赖信息很容易发生出入(繁琐),不易统一管理。
使用同一个框架内的不同jar包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。
使用框架时所需要的 jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新项目中重新摸索。
通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的jar包;又能够将以往的经验沉淀下来,节约时间和精力。
3.继承语法
父工程中pom文件中打包方式设置为pom (因为父工程不需要来打包)
<groupId>com.cjx.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 父工程不需要来打包 所以打包方式为pom -->
<packaging>pom</packaging>
<modules>
<!--子模块-->
<module>maven-son</module>
</modules>
子工程 pom文件 :
<!-- 父工程坐标 -->
<parent>
<groupId>com.cjx.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 当有了父工程那么子工程就只剩自己的artifactId坐标 子工程和父工程的 groupId 和 version 是要保持一样的 -->
<artifactId>maven-son</artifactId>
4.子工程继承和指定继承
全部继承:
父工程中dependencies标签中的所有依赖会无条件的全部继承给子工程
指定继承:
如果父工程dependencies被dependencyManagement标签包含那么子工程中需要在它自己的工程dependencies标签中写入父工程的依赖 但是不要写版本号
5.聚合关系
聚合关系可以将一个父工程的所有子工程一键打包,统一管理,点击父工程打包会把所有子工程进行打包
只需要在父工程pom文件中加入modules
<modules>
<!--子模块-->
<module>maven-son</module>
</modules>