[Maven] 分模块开发——依赖的传递、聚合、继承

在Maven中,分模块开发是指将一个大型项目拆分为多个独立的模块或子项目,每个模块可以单独构建、测试和部署。这种模块化的开发方式有助于提高项目的可维护性、可扩展性和复用性。

在Maven中,可以通过在项目的根目录下创建多个子模块(子项目)来实现分模块开发。每个子模块都有自己的pom.xml文件,用于定义该模块的依赖、构建配置等信息。父项目的pom.xml文件可以使用<modules>标签来列出所有子模块,以便Maven能够统一管理这些模块的构建过程。

这篇文章就总结一下如何将项目分模块,怎样把模块再联合起来,包括各模块之间的依赖关系。

我们以之前写过的“ SSM 整合”的案例来做分模块开发

原项目模块:

1.分离Pojo模块

pojo 里面是项目的实体类,实体类是项目中很多模块都会用到的东西,我们把 pojo 分离出来单独构建

1.1 首先创建一个新模块,Pojo模块

1.2 在Pojo模块中构建 pojo 的实体类

1.3 把Pojo模块联合到主项目中

要想把Pojo模块联合到主项目中,需要把Pojo模块的坐标加载到主项目的 pom.xml 的依赖中

在Pojo模块的 pom.xml 中,会有该模块的坐标

需要先把Pojo模块的坐标上传到自己的 maven 本地仓库中,而主项目的 pom.xml 中加载Pojo模块的坐标是从本地仓库加载的

点开左侧的导航栏,找到Pojo模块,点击 install ,把Pojo模块的坐标上传到 maven 本地仓库中

然后,在主项目的 pom.xml 的依赖中,加载Pojo模块的坐标

2.分离dao模块

原理与上述的Pojo模块分离一样

最后在主项目中加载dao模块的坐标

因为 dao模块中需要用到Pojo模块,所以在 dao模块的 pom.xml 中加载Pojo模块的坐标

3.依赖的传递

在主项目的 pom.xml 的依赖中加载了dao模块的坐标,所以 dao 模块中所依赖的坐标也会跟着被加载到主项目中。主项目中的依赖叫做“直接依赖”,而直接依赖里面的依赖被叫做“间接依赖”

3.1 可选依赖

dao模块的 pom.xml 中加载了Pojo模块的坐标,如果我们在Pojo模块的依赖中加入了

<optional>true</optional>
这个标签是可选依赖,可选依赖是隐藏当前模块中的依赖,隐藏后该依赖不具有依赖传递性

则主项目中dao 模块依赖的间接依赖中就不会加载Pojo模块依赖

3.2 排除依赖

如果在dao 模块中,有一个日志依赖

该依赖不能被隐藏,但是主项目中又用不到,那我们就可以在主项目中加载 dao 模块依赖时将其排除

4.聚合模块

聚合模块的作用是将多个数据源或组件整合在一起,提供统一的接口给用户使用,从而实现更复杂的功能或服务,并提高系统的灵活性、可维护性和可扩展性。

现在我们经过分离之后,一个有三个模块,分别是:maven模块,pojo模块,dao模块

现在创建一个聚合模块 “parent模块”,把这三个 :maven模块,pojo模块,dao模块,都包含进去

在 “parent模块”的 pom.xml 中编写

“parent模块”可以叫做“父模块”,而 maven模块,pojo模块,dao模块可以叫做“子模块”

在子模块中,可以继承父模块,可以直接使用父模块中所定义的依赖

父模块的打包方式是“pom”

5.依赖继承

在子模块中继承父模块,加载父模块的坐标

子模块中继承父模块之后,在父模块中定义的依赖,在子模块中不需要定义,就可以被子模块使用

而在父模块中定义的依赖管理中的依赖,不会被子模块直接继承,而需要在子模块中进行声明,但是子模块声明父模块依赖管理中的依赖时,不需要带有版本号,而是使用父模块依赖管理中的依赖版本号

把 junit 依赖定义到父模块依赖管理中

在maven 模块中声明父模块依赖管理中的 junit 依赖

6.整体模块

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

托马斯家的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值