likes
comments
collection
share

Spring Boot | 手动创建多模块项目

作者站长头像
站长
· 阅读数 14

我正在参加「掘金·启航计划」

前言

当我们的单体工程功能越来越复杂、代码量越来越多时,通过合理地模块拆分,可以提高代码的复用性,使项目的结构更加清晰、明确,方便后期项目的维护和管理。

创建父工程

笔者汪小成并没有选择使用Spring Initializr或者IDEA快速创建项目,而是选择最原始地手动创建项目。因为父工程主要作用是统一管理Maven依赖版本,只需要有一个pom.xml文件即可。使用Spring Initializr或者IDEA创建项目时自动生成的其它文件或文件夹(比如:src)都还要删除。

1、创建父工程文件夹

$ mkdir spring-boot-demos && cd spring-boot-demos

2、创建pom.xml文件

$ touch pom.xml

3、编辑pom.xml文件

pom.xml文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.ddcherry</groupId>
    <artifactId>spring-boot-demos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-demos</name>
    <!--  父工程的打包方式必须是pom  -->
    <packaging>pom</packaging>
    <description>spring-boot-demos</description>

    <properties>
        <java.version>1.8</java.version>
        <lombok.version>1.18.24</lombok.version>
        <spring-boot.version>2.7.7</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
    </dependencies>

  	<!-- 这里统一管理所有子工程的依赖的版本号 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

说明:

  • 父工程pom.xml文件中<packaging>节点的值必须为pom

pom.xml文件中可以看出笔者汪小成选择的JDK版本为1.8,Spring Boot的版本为2.7.7

引入Spring Boot 相关Maven依赖,笔者汪小成并没有选择继承spring-boot-starter-parent的方式,而是选择了在<dependencyManagement>节点下引入spring-boot-dependencies的方式。

使用spring-boot-dependencies引入Spring Boot 相关Maven依赖,可以解决Maven项目单继承的问题。这样我们就可以在引入Spring Boot 相关Maven依赖的同时继承其他父工程。

4、使用IDEA打开父工程

File --> Open... --> 选择父工程文件夹 --> OK

Spring Boot | 手动创建多模块项目

父工程至此也就创建完成啦。

创建子工程

1、在父工程上单击鼠标右键,选择New --> ModuleSpring Boot | 手动创建多模块项目

2、在New Module对话框中,选择Maven --> 点击Next按钮; Spring Boot | 手动创建多模块项目

3、输入子工程的Name --> 点击Finish按钮。

说明:笔者汪小成本地环境里已经创建了子工程01.spring-boot-hello了,截图中的Name不能再输入01.spring-boot-hello了。

Spring Boot | 手动创建多模块项目

子工程创建成功后,父工程的pom.xml文件的<modules>节点下会自动增加一个<module>

<modules>
  <module>01.spring-boot-hello</module>
</modules>

4、编辑子工程pom.xml文件

子工程pom.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-boot-demos</artifactId>
        <groupId>cn.ddcherry</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>01.spring-boot-hello</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

</project>

至此子模块也创建成功了。现在就可以着手在子工程中编码了。