1.分模块设计与开发
便于项目管理、拓展、维护与资源共享
创建项目在IDEA里选择Maven模块。
2.继承
继承的单位是工程(包括模块),类似于java中的继承(不能多继承,即只能有一个父工程),子工程可以继承父工程的配置信息。
实现:在pom.xml中使用<parent>标签
创建父工程:
- 设置打包方式为pom(默认为jar):<packaging>pom</packaging>
- 配置各个工程中各有的依赖
创建子工程并继承
- 通过<parent>标签指定父工程
- 在<parent>标签内使用<groupId>,<artifactId><version>引入父工程的坐标
- 在<parent>标签内通过<relativePath>指定父工程pom文件的相对位置(不指定会在本地仓库/远程仓库中查找)
在子工程继承父工程后,groupId可以省略
就近原则:父子工程配置了同一个依赖的不同版本,以子工程为准
版本锁定<dependencyManagement>
- 概念:可以在父工程的pom文件中通过<dependencyManagement>来统一管理依赖版本。之后,子工程引入依赖则无需指定版本号,由父工程统一管理。
- 场景:同属于一个父工程下的部分子工程需要一个依赖,而其他子工程不需要,如果直接在父工程中引入,使得工程臃肿。
- 与在父工程中使用<dependency>直接引入依赖统一管理的区别:<dependencyManagement>指负责管理版本号,并不引入依赖。
自定义 属性/引用属性
管理大型项目时,由于引入依赖多,控制版本的标签分散,不便于管理。为了便于统一集中管理:
- 使用<properties>标签自定义标签\属性。
- 使用
<version>${自定义标签}</version>
指定依赖版本
例:
自定义属性部分:
<properties>
<lombok.version>1.18.24</lombok.version>
<jjwt.version>0.9.0</jjwt.version>
</properties>
版本锁定部分:
<dependencyManagement>
<dependencies>
<!--- JWT 令牌--->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>${jjwt.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
直接引入依赖部分:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
3.聚合
- 概念:将多个模块组织成一个整体,同手进行项目的构建,需要一个聚合工程。用于快速构建项目。
- 聚合工程:将多个模块聚合在一起但是不具有业务功能的“空工程(有且仅有一个pom文件)”。一般是顶层父模块。
- 实现:在聚合工程中使用
<modules>
标签来指定包含的子模块。<modules>
标签内是子模块相对于父模块的相对路径。
例:
<modules>
<module>module - 1</module>
<module>module - 2</module>
</modules>
4.私服:
实际参与工作再学…