一、分模块开发
1.1 分模块开发的意义
将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。
1.2 分模块开发与设计
分模块开发代码设计步骤如下,目的是将bean层和mapper层从原模块中分离出来,变成两个新的模块。
(1)新建2个mav
en模块
(2)书写模块代码
分模块开发需要先对模块功能进行设计,再进行编码。不会先将工程开发完毕,再进行拆分。
这里的模块代码主要是Book实体类和BookMapper接口,如上图。
(3)通过maven-install指令将模块安装到本地
(4)在模块中引入分模块
<!-- 引入模块1--> <dependency> <groupId>org.itxiaoguo</groupId> <artifactId>maven_1</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- 引入模块2--> <dependency> <groupId>org.itxiaoguo</groupId> <artifactId>maven_2</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
至此,多模块协同开发搭建完毕。
二、依赖管理
2.1 依赖传递
(1)依赖具有传递性,比如A依赖B,B依赖C,那么A依赖C,B称为直接依赖,C称为间接依赖。依赖优先级:
2.2 可选依赖和排除依赖
可选依赖 | 排除依赖 |
在当前模块可用,不能向下传递。如自己写的依赖提供给别人使用时 | 有但不需要使用该依赖时,排除依赖,不需要写版本号。如当发现一个jar包的东西不好用时可以排除 |
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <!-- 设置当前依赖为可选依赖,只在当前模块可用,不能向下传递--> <optional>true</optional> </dependency>
<dependency> <groupId>org.itxiaoguo</groupId> <artifactId>maven_1</artifactId> <version>1.0-SNAPSHOT</version> <exclusions> <exclusion> <!-- 有但不需要使用该依赖时,排除依赖,不需要写版本号,--> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </exclusion> </exclusions> </dependency>
三、继承与聚合
3.1 聚合
聚合是指用将多个模块组织成一个整体,从而达到同时进行项目构建,这个管理工程称为聚合工程,下面介绍如何进行聚合工程开发。
<!-- 1.设置聚合工程的打包方式为pom--> <packaging>pom</packaging> <!-- 2.添加要管理的maven工程--> <modules> <module>../SSM_1</module> <module>../maven_2</module> <module>../maven_1</module> <!-- 注意事项:编译顺序与模块书写无关,与模块之间的依赖关系有关--> </modules>
当交换module书写顺序后,再次编译:
3.2 继承(依赖继承)
子工程可以继承父工程(通常是聚合工程)的配置信息,最常见的是依赖关系继承。作用是简化开发,减少依赖版本冲突。
<!-- 聚合工程--> <!-- 1.要继承的依赖--> <dependencies> <!-- mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!-- mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency> </dependencies> <!-- 2. 可选继承依赖--> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
<!-- 子工程--> <!-- 声明继承关系--> <parent> <groupId>org.itxiaoguo</groupId> <artifactId>maven_parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../maven_parent/pom.xml</relativePath> </parent>
类型 | 聚合 | 继承 |
作用 | 快速构建项目 | 快速配置项目 |
相同 | pom文件打包方式为pom | 属于设计型模块,无实际功能 |
不同在当前模块配置聚合关系,模块可以感知到子模块在子模块中继承,父工程无法知道哪些工程继承了自己