Maven高级——分模块设计与开发

目录

​编辑

分模块设计与开发

拆分策略

继承与聚合

版本锁定

聚合

作用

实现

Maven中继承与聚合的联系与区别?

联系

区别

私服


分模块设计与开发

将一个大项目拆分成若干个子模块,方便项目的管理维护,扩展,也方便模块间的相互引用,资源共享。

拆分策略

策略一:按照功能模块拆分,比如:公共组件、商品模块、搜索模块、购物车模块、订单模块等。

策略二:按层拆分,比如:公共组件、实体类、控制层、业务层、数据访问层。

策略三:按照功能模块 + 层拆分。

继承与聚合

继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。

第一步:创建父工程,设置打包方式为pom,并继承spring-boot-starter-parent

第二步,在子工程中配置继承关系

在子工程中通过parent标签来设置继承关系,来指定当前这个子工程要继承我们所创建的这个父工程,要指定父工程的坐标,通过relativePath来指定父工程的相对路径,那如果你不指定,默认的是从本地仓库或者远程仓库来查找,一旦设置了继承关系,这个组织的名字也会从父工程商继承下来,所以子工程中配置的groupId是可以省略的

第三步,在父工程中配置各个工程的共有依赖

在子工程中,配置了继承关系后,坐标中的groupId是可以省略的,因为会自动继承父工程。

若父子工程都配置了同一个依赖的不同版本,以子工程为准

版本锁定

在maven中,可以在父工程的pom文件中通过<dependencyManagement>来同意管理依赖版本

<dependencies>是直接依赖,在父工程配置了依赖,子工程会直接继承下来

<dependencyManagement>是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

聚合

将多个模块组织成一个整体,同时进行项目的构建

聚合工程师一个不具有业务功能的"空"工程,有且仅有一个pom文件。tlias-parent既可以作为父工程,也可以作为聚合工程,通常来说父工程和聚合工程都是同一个工程,

作用

聚合的作用就是快速构建项目,在构建项目的过程中,我们是不需要考虑工程间的依赖关系的,我们直接在这个聚合工程上进行操作就可以了,比如我们要安装,我们直接在聚合工程上安装,那么下面的这些个子模块都会全部的进行安装

实现

在Maven中可以通过<modules>设置当前聚合工程所包含的子模块名称

Maven在执行聚合操作时,会自动的根据模块之间的依赖关系来设置构建的顺序,与我们在聚合工程中所配置的这个模块的顺序是没有关系的

如果我们配置好了聚合关系之后,指定了这个聚合工程要聚合哪些模块之后,在右侧的Maven面板中只会展示这个tlias-parent,紧接着将它展开才会看到他里面聚合的其他模块

接下来我们要进行操作的时候就可以直接在聚合工程里进行操作,0比如要进行clean清理,就直接在聚合工程中进行清理

Maven中继承与聚合的联系与区别?

联系

都属于设计型模块,打包方式都位pom,不用写任何的Java代码,常将两种关系制作到同一个pom文件中

区别

继承可以用来简化依赖的配置,我们可以将子工程上公共的这部分依赖统一的抽取到父工程中,所以可以简化依赖的配置,也可以管理依赖的版本,而在配置继承关系的时候,它不是在父工程商配置,而是在子工程中配置他们之间的继承关系,这是继承

对于聚合来说,它的作用是为了快速构建项目,而不用去处理繁琐的模块之间的依赖关系,而对于这一层聚合关系来说,而它是在父工程上来配置当前这个聚合工程要聚合哪些模块的

私服

相关推荐
毕设源码-郭学长1 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
梨落秋霜1 小时前
Python入门篇【文件处理】
android·java·python
Java 码农1 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
哈库纳玛塔塔1 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
S***q3772 小时前
Spring Boot管理用户数据
java·spring boot·后端
天“码”行空3 小时前
java面向对象的三大特性之一多态
java·开发语言·jvm
毕设源码-郭学长3 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
l***21783 小时前
SpringBoot Maven快速上手
spring boot·后端·maven
好大哥呀3 小时前
Java Web的学习路径
java·前端·学习
f***14773 小时前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端