一、分模块设计
(一)概念: 将项目按功能拆分出若干个子模块。
(二)作用: 方便项目管理维护、扩展,也方便模块间相互调用,资源共享。
(三)具体实现
1、抽取公共包作成模块(以pojo实体类为例)
2、向使用的项目添加依赖
3、向使用类中引用
(四)注意事项
- 分模块设计需要先针对模块设计,再进行编码。
二、继承与聚合
(一)继承
1、概念: 继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息, 常见于依赖关系的继承。
2、作用: 简化依赖配置、统一管理依赖
3、实现方式: <parent> … </parent>
- 设置父工程模块,通常设置打包方式为pom(默认jar包)
- jar: 普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
- war: 普通web程序打包,需要部署在外部的tomcat服务器中运行
- pom: 父工程或聚合工程,该模块不写代码,仅依赖管理
<!--引入父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifacId>
<version>2.7.5</version>
<relativePath/> <!--从本地仓库查询-->
</parent>
<!--配置当前工程-->
<groupId>com.zengoo</groupId>
<artifactId>xxx-parent</artifacId>
<version>1.0-SNAPSHOT</version>
<pcakaging>pom</packaging>
- 在子工程的pom.xml文件中,配置继承关系
<parent>
<groupId>com.zengoo</groupId>
<artifactId>xxx-parent</artifacId>
<version>1.0-SNAPSHOT</version>
<!--配置引入目标工程的pom包-->
<relativePath>../zengoo-parent/pom.xml</relativePath>
</parent>
- 在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)
4、版本锁定
(1)作用: 对依赖进行版本管理。
(2)原始实现方式: 在父工程的pom.xml中通过<dependencyManagement>来统一管理依赖版本
<!--父工程配置版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>x.x.x</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--子工程引入依赖-->
<dependencies>
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
</dependency>
</dependencies>
(3)优化使用:自定义属性列表
配置文件application.properties
<properties>
<lombok.version>1.18.24</lombok.version>
<jjwt.version>0.9.1</jjwt.version>
</properties>
父工程pom文件
<dependencyManagement>
<dependencies>
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>${jjwt.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
子工程pom文件
<dependencies>
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>${jjwt.version}</version>
</dependency>
</dependencies>
(二)聚合
1、作用: 将多个模块组合成一个整体,同时进行项目构建。(快速构建项目)
2、实现:
父工程(聚合工程)pom.xml
<moudles>
<moudle>../xxx</moudle>
<moudle>../xxx</moudle>
<moudle>../xxx</moudle>
<moudle>../xxx</moudle>
</moudles>
(三)继承与聚合的总结
- 作用:
- 聚合用于快速构建项目
- 继承用于简化依赖配置、统一管理依赖
- 相同点:
- 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系只做到同一个pom文件中
- 聚合与继承均属于设计型模块,并无实际模块内容
- 不同点:
- 聚合是在聚合工程中配置关系,聚合可以预设模块进行
- 继承是在子模块中配置关系,父模块无法预设子模块继承
三、私服(Maven共享)
(一)概念: 私服是一种特殊的远程仓库,用来代理外部的中央仓库,用于解决团队内部资源共享与资源同步问题。
(二)使用私服
- 步骤一:Maven的setting.xml中配置账户与密码
<server>
<id>maven-releases</id> #发行版本仓库
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>maven-snapshot</id> #快照版本仓库
<username>admin</username>
<password>admin</password>
</server>
- 步骤二:pom文件中配置上传地址
<distributionManagement>
<repository>
<id>maven-releases</id>
<url>正式版本仓库仓库访问路径</url>
</repository>
<repository>
<id>maven-snapshot</id>
<url>快照版本仓库访问路径</url>
</repository>
</distributionManagement>
- 步骤三:设置私服依赖下载的仓库组地址(settings.xml)
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>仓库组访问路径</url>
</mirror>
- 步骤四:私服settings.xml中的profile属性下配置
<profile>
<id>allow-snapshots</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven-public</id>
<url>仓库组访问路径</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>