持续创作,加速生长!这是我参与「日新计划 6 月更文应战」的第3天,点击检查活动概况
1. 多模块项目
运用 SpringBoot 开发 Web 项目,假如项目整体不太杂乱,无需运用微服务架构,为了开发的便利性能够采用 Maven 的多模块项目结构。
SpringBoot 的多模块项目便是根据 Maven 办理、对项目按照功能或许层级结构进行拆分,下降项目耦合性,抽取公共模块,完成一处开发多处引证,进步代码复用率和开发效率,更利于项目后期的维护和晋级。
2. 项目结构初始化
2.1 创立父工程
创立多模块项目时首先要创立最上层父工程,并用来一致办理子模块,创立办法流程为:
- 运用 IDEA 编译器,挑选文件 -> New -> 新建项目,挑选 Spring Initializr,点击下一步,
- 设置适宜的 Group 称号和 Artifact 称号(两者最终代表包路径),挑选适宜的 Java 版别并点击下一步,
- 挑选适宜的起步依靠,也能够不挑选后续运用 maven 坐标手动添加,点击下一步,
- 为项目设置适宜的称号,并挑选项目在本地生成的根目录,点击完结
- 初始化生成 SpringBoot 项目
得到父工程项目后,由于父工程只用来一致办理多模块,并不会进行代码编写,因而会将父工程目录结构中无用的文件和文件夹删去
- 删去 .mvn 和 src 文件夹
- 删去 mvnw 和 mvnw.cmd 文件
- 留下 pom.xml 作为父级依靠设置,进行一致依靠办理
2.2 创立子模块
父工程创立成功后,能够在此基础上新建子模块,在父项目上点击鼠标右键,挑选新建 -> 模块 -> 新建模块,挑选 Spring Initializr,之后便和创立 SpringBoot 项目一致,界说组织称号、挑选起步依靠、界说项目称号,最后完结创立得到一个子模块项目。
在创立子模块项目时有几点需求留意:
- 子模块创立时 Group 、 Artifact 和 Name 不要与父工程重复,不然相关时会呈现抵触
- 子模块的模块名会在目录结构中展现,并运用模块名进行父子相关
- 自界说子模块称号时,对应的的内容根目录和模块文件方位要跟从变化,假如设置成了父工程目录,则会掩盖父工程文件导致结构过错!
完结子模块的创立后,在项目中就会呈现如下的目录结构
2.3 相关父子模块
到目前为止,整个项目结构上满意了父工程、子模块,要想真正完成父子模块相关还需求进一步设置。
父工程配置
- 父工程的 pom.xml 中,设置 pom,代表打包类型为 pom
- 父工程的 pom.xml 中,运用 标签界说子模块进行相关
<modules> <module>child_module_name</module> </modules>
- 留意:父工程的 pom.xml 中的 标签中引证了的 springboot ,这是 SpringBoot 项目默许需求引证的尖端工程,不能够删去,假如删去会导致项目运转失败!
子模块配置
- 子模块的 pom.xml 中, 标签内容修改为父工程的 groupId、artifacId 等信息
- 子模块的 pom.xml 中,运用 jar 设置打包为 jar 格式(可不加,在创立模块时会有挑选默许打包类型)
3. 项目依靠的一致办理
3.1 默许引进依靠
起步依靠
在创立项目模块时,假如不挑选任何初始依靠,那么 SpringBoot 项目只会默许参加 spring-boot-starter 和 spring-boot-starter-test 两个依靠信息
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
引进依靠
对于 Web 项目,还需求添加 web 依靠信息,能够在父工程的 pom.xml 文件中的 标签中添加如下依靠信息
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
添加完结后,则一切子模块都会继承该依靠信息自动收效,无需额定引进。
3.2 一致办理依靠
既然是父-子工程的结构,能够将项目中用到的依靠一致在父工程项目中进行办理,一致依靠和版别号信息。
- om.xml 文件中,能够运用 标签自界说相关依靠的版别号
<properties>
<java.version>1.8</java.version>
<lombok.version>1.18.0</lombok.version>
<mysql.version>8.0.23</mysql.version>
</properties>
2 然后能够运用 标签一致声明用到的依靠信息,其中的版别号运用 标签界说变量
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<type>pom</type>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
- 每个子模块需求运用依靠是只需求在 标签中参加依靠 groupId 和 artifactId 信息即可,版别号会自动运用父工程声明的版别
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
配置完结之后,假如有晋级依靠 jar 版别的需求,则只需求在父工程中更新对应依靠的版别信息即可。
4. 项目运转
多模块的 SpringBoot 项目构建完结并配置完结后,且引进了 web 项目必须的依靠,就能够验证项目是否能够正常运转。
- 验证运转:由于父工程没有代码启动类,因而只需求进入到子模块中,找到对应的启动类运转,假如运转成功,阐明子模块运转依靠等配置成功;
- 验证打包:打包流程运用 maven 东西办理,只需求在 IDEA 右侧打开 maven 东西栏,在父工程下的 Lifecycle 声明周期中,履行 clean、package、install 等阶段,控制台输出履行成功日志阐明打包完结。
假如需求新增子模块,则按照相同的方式初始化模块,相关父工程,并在父工程中添加 标签对应即可。