持续创作,加速生长!这是我参与「日新计划 6 月更文应战」的第3天,点击检查活动概况

1. 多模块项目

运用 SpringBoot 开发 Web 项目,假如项目整体不太杂乱,无需运用微服务架构,为了开发的便利性能够采用 Maven 的多模块项目结构。

SpringBoot 的多模块项目便是根据 Maven 办理、对项目按照功能或许层级结构进行拆分,下降项目耦合性,抽取公共模块,完成一处开发多处引证,进步代码复用率和开发效率,更利于项目后期的维护和晋级。

2. 项目结构初始化

2.1 创立父工程

创立多模块项目时首先要创立最上层父工程,并用来一致办理子模块,创立办法流程为:

  1. 运用 IDEA 编译器,挑选文件 -> New -> 新建项目,挑选 Spring Initializr,点击下一步,
  2. 设置适宜的 Group 称号和 Artifact 称号(两者最终代表包路径),挑选适宜的 Java 版别并点击下一步,
  3. 挑选适宜的起步依靠,也能够不挑选后续运用 maven 坐标手动添加,点击下一步,
  4. 为项目设置适宜的称号,并挑选项目在本地生成的根目录,点击完结
  5. 初始化生成 SpringBoot 项目

得到父工程项目后,由于父工程只用来一致办理多模块,并不会进行代码编写,因而会将父工程目录结构中无用的文件和文件夹删去

  • 删去 .mvn 和 src 文件夹
  • 删去 mvnw 和 mvnw.cmd 文件
  • 留下 pom.xml 作为父级依靠设置,进行一致依靠办理

2.2 创立子模块

父工程创立成功后,能够在此基础上新建子模块,在父项目上点击鼠标右键,挑选新建 -> 模块 -> 新建模块,挑选 Spring Initializr,之后便和创立 SpringBoot 项目一致,界说组织称号、挑选起步依靠、界说项目称号,最后完结创立得到一个子模块项目。

在创立子模块项目时有几点需求留意:

  • 子模块创立时 Group 、 Artifact 和 Name 不要与父工程重复,不然相关时会呈现抵触
  • 子模块的模块名会在目录结构中展现,并运用模块名进行父子相关
  • 自界说子模块称号时,对应的的内容根目录模块文件方位要跟从变化,假如设置成了父工程目录,则会掩盖父工程文件导致结构过错!

完结子模块的创立后,在项目中就会呈现如下的目录结构

SpringBoot 多模块项目构建(父/子模块)

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 一致办理依靠

既然是父-子工程的结构,能够将项目中用到的依靠一致在父工程项目中进行办理,一致依靠和版别号信息。

  1. 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>
  1. 每个子模块需求运用依靠是只需求在 标签中参加依靠 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 项目必须的依靠,就能够验证项目是否能够正常运转。

  • 验证运转:由于父工程没有代码启动类,因而只需求进入到子模块中,找到对应的启动类运转,假如运转成功,阐明子模块运转依靠等配置成功;

SpringBoot 多模块项目构建(父/子模块)

  • 验证打包:打包流程运用 maven 东西办理,只需求在 IDEA 右侧打开 maven 东西栏,在父工程下的 Lifecycle 声明周期中,履行 clean、package、install 等阶段,控制台输出履行成功日志阐明打包完结。

SpringBoot 多模块项目构建(父/子模块)

假如需求新增子模块,则按照相同的方式初始化模块,相关父工程,并在父工程中添加 标签对应即可。