Maven工程继承与聚合 父工程统一依赖管理

前言

Maven工程的继承与聚合特性使得项目的依赖管理与统一打包更加的简便,为了对Maven工程的继承与聚合的特性进行介绍说明及父工程进行统一依赖管理的方法进行操作演示,下面首先创建一个Maven工程作为父工程。

随后在其中创建一个子工程,并在创建的过程中选择刚才所创建的工程为父工程,子工程的GroupID与父工程一定要保持一致

此时父子工程创建完毕,下面将对父子工程间的继承与聚合特性,及父工程的统一依赖管理进行介绍。

Maven工程的继承关系

创建完父子工程后,打开父工程中的pom.xml文件,可以看到其打包方式为pom。

这是因为父工程无需java代码文件,只需负责管理依赖或配置信息,src的目录也可以直接删除,所以父工程不需要参与打包,其规定的打包方式即为pom。

同时在子工程的pom.xml文件中也可以看到父工程的信息,存放在parent属性中,下方的artifactId才存放自己的属性,二者结合成为该子工程的坐标。

此时在父工程中导入一个依赖,以druid为例。

再查看父子工程的依赖文件信息。

可以看到他们都拥有相同的依赖文件。这就是Maven工程的继承特性,当在父工程中以dependencies属性引入依赖时,这些依赖都会无条件继承给子工程。

Maven父工程统一依赖管理

当父工程的依赖全部都无条件继承给子工程时,可能会产生冗余,因为子工程大部分情况下都不会用到父工程的所有依赖。面对这种情况,可以使用dependencyManagement属性来让父工程进行统一的依赖管理。

将前文中父工程内导入依赖的方式改为上图的格式,此时子工程中就不会被继承到该依赖了。

当子工程需要继承父工程的某个依赖时,需要进行依赖的声明

不过和正常导入依赖的方式不同的是,在子工程中进行依赖的声明无需注明版本号,所有版本号全都由父工程中导入的依赖决定。子工程在按上述方式导入依赖后,可见依赖导入成功,并继承了父工程的版本。

这样就通过dependencyManagement属性实现了父工程对其各个子工程的依赖进行统一管理,也避免了每个子工程都要继承所有父工程的依赖的弊端。

Maven工程的聚合关系

Maven聚合是指将多个项目聚集到一个父级项目中,以便一起构建和管理的机制。

当一个父工程具有几个对应的子工程时,他们可以视为聚合在了一起,并且此时父工程进行了某个构建操作,子工程也会进行同样的构建操作

对于父子工程的聚合,其在配置文件中的记录只需要在父工程中配置modules属性,并写好对应的子过程的路径即可。需要注意的是,对子工程的配置写的是路径而不是名称,如下的配置中直接写成名称的原因是子过程的目录就在父工程目录的下一级。

此时父工程maven_parent和子工程maven_son的关系即为聚合关系,为了验证聚合关系的作用,此时对父工程进行clean操作。

可见在对父工程进行clean的同时子工程也进行了clean操作。此时再尝试package操作。

可见在对父工程进行打包的操作后,子工程即进行了打包生成了jar包,但由于父工程不参与打包,所以没有生成对应的target文件目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值