一、简介
SpringBoot是一个高效的工具,它能够快速便捷地创建一个整体完整的项目,而且能够与各种其他的框架集成。对于一个大型的项目来说,一个整体完整的项目可能并不是最好的方案。为了解决这个问题,我们可以采用多模块的方式进行项目开发,这样既能够实现独立部署,也能够进一步提高开发效率。
二、创建多模块项目
在创建多模块项目之前,需要明确一个概念,就是模块(module)。模块是指一组代码和资源的集合,它可以单独编译、测试、打包和部署。在Java中,模块通常使用Maven或Gradle管理。在SpringBoot中,我们也可以使用Maven或Gradle来维护多模块项目。接下来,我们一步一步进行多模块项目的创建。
1. 创建父项目
在创建多模块项目的时候,通常需要先创建一个父项目(pom项目),这个父项目的作用是维护所有子模块的公共依赖,比如SpringBoot版本号、数据库连接池等等。创建父项目的方式略有不同,因为这个项目没有实际功能,仅仅是为了维护所有子模块的公共依赖,所以代码极简。
<?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">
<groupId>org.example</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>child1</module>
<module>child2</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</project>
2. 创建子模块
在创建子模块之前,需要再次强调一下,每个子模块都是一个独立、可编译、可测试、可打包、可部署的Maven项目,与其他模块相互独立。这里我们以两个子模块为例,分别命名为child1和child2。在子模块中,我们需要维护自己的业务逻辑和依赖,而且需要关注父模块是否继承父模块相应的依赖。
子模块1:child1
在child1的目录下创建一个Maven项目,名字为child1,并在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>
<groupId>org.example</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.example</groupId>
<artifactId>child1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
子模块2:child2
同理,在child2的目录下创建一个Maven项目,名字为child2,并在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>
<groupId>org.example</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.example</groupId>
<artifactId>child2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.3.0.0</version>
</dependency>
</dependencies>
</project>
三、集成子模块
在创建完父模块和子模块后,下一步就是要将所有模块集成起来。在父模块的pom.xml中添加子模块,关键代码如下:
<modules>
<module>child1</module>
<module>child2</module>
</modules>
完成后你将会看到一个与父项目名称相同的顶级文件夹,该文件夹名就是顶级父项目的名称,这个文件夹存储着所有子模块。在此文件夹中打开命令提示符或终端,输入以下命令:
mvn clean install
完整代码请参见:https://github.com/xiaomuworld/springboot-multimodule-demo