目录
一、分模块设计
为什么要分模块设计,将项目按照功能拆分分成若干个子模块,方便项目的管理、扩展、也方便模块间相互调用,资源共享。
二、分模块设计小实践
创建一个maven模块tlias-pojo,存放实体类
模块创建成功
把tlias-web-management中pojo包复制过去(包的结构要与原来的一致),原来就可以删除了。发现报错了。这是因为我们没有导入对应的依赖。
现在我们去导入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>tlias-pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
创建一个maven模块tlias-utils,存放工具类 ,我就不过多讲解了,自己动手试试。
注意事项:分模块开发需要先针对模块功能进行设计,在进行编码,不会先将工程开发完毕,然后再进行拆分。
三、Maven继承
继承描述的是两个工程间的关系,与java中继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。它简化了依赖配置、统一管理依赖,通过<parent></parent>实现。只能单继承,多重继承。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
1.继承关系实现
1.创建maven模块tlias-parent,该工程为父工程,设置打包方式为pom(默认jar)
打包方式:
- jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
- war:普通web程序打包,需要部署在外部的tomcat服务器中运行
- pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
2.在子工程的pom.xml文件中,配置继承关系
<parent>
<groupId>org.example</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../tlias-parent/pom.xml</relativePath>
</parent>
../表示上一级目录 ,relativePath指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程).
Definition of groupld is redundant, because it's inherited from the parent,表示groupld的定义是冗余的,因为它是从父类继承而来的,可删除。
3.在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)
2.版本锁定
dependencyManagement
在maven中,可以在父工程的pom文件中通过<dependencyManagement>来实现统一管理依赖版本。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
</dependencies>
</dependencyManagement>
在父工程中<dependency>是直接依赖,子工程会直接加入依赖 。而<dependencyManagement>仅仅管理依赖的版本,子工程需自己导入依赖。子工程映入依赖时,无需指定<version>版本号,由父工程统一管理。变更依赖版本,只需要在父工程中统一变更。
自定义属性/引用属性
<properties>
<!-- 指定JDK的版本-->
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<lombok.version>1.18.24</lombok.version>
</properties>
四、Maven聚合
聚合: 将多个模块组织成一个整体,同时进行项目的构建。
聚合工程(父工程):一个不具有业务功能的“空”工程(有且仅有一个pom文件)
maven中可以通过<modules>设置当前聚合工程所包含的子模块名称
<modules>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>
聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中的模块的配置书写位置无关。
现在可以直接package。
五、Maven私服
私服是一种特殊的远程仓库,他是架设在局域网的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。
依赖查找的顺序:本地仓库->私服->中央仓库
私服在企业开发项目中,一个项目/公司,只需要一台即可(无需我们自己搭建,会使用即可)。