Maven 多模块项目通常由一个父模块和若干个子模块构成,每个模块都对应着一个 pom.xml。它们之间通过继承和聚合(也称作多模块)相互关联。多模块适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。
这里我们使用的工具是:IDEA
一、创建父工程
打开IDEA,点击新建,选择Maven项目。创建父类工程 piao。
因为是父类工程,所以我们需要把多余的文件删除,只保留pom文件。
删除后的工程目录:
二、创建二个子工程
这里我们创建二个子工程,分别是piao-common,piao-system 两个工程。
2.1、创建 piao-common 子工程。
右击父工程,点击新建模块。如下图:
我们先创建piao-common工程,该工程是工具类,所以我们继续选择maven工程。
下一步,直到完成。如下图:
2.2、创建 piao-system 平台层工程。
右击父工程,点击新建模块。如下图:
因为 piao-system 是SpringBoot 项目,所以我们选择创建Spring Initializr。
下面的步骤就跟我们创建SpringBoot项目的步骤一致。
现在我们删除多余的目录。如果大家用的是Git版本控制器,gitignore也可以放到父工程的目录中去。这里我们就删掉。
最终目录如下:
三、所有工程pom文件
3.1、piao 父工程文件如下:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>piao</artifactId>
<!-- 父模块打包类型必须为pom -->
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- parent指明继承关系,给出被继承的父项目的具体信息-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/>
</parent>
<!-- 模块说明:这里声明多个子模块 -->
<modules>
<module>piao-common</module>
<module>piao-system</module>
</modules>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
</dependencies>
<!-- 版本说明:这里统一管理依赖的版本号 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>piao-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>piao-system</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
多模块项目中,父模块打包类型必须是 pom。
3.2、piao-common 子工程文件如下:
<?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>piao</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>piao-common</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
3.3、piao-system 子工程文件如下:
<?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>
<parent>
<artifactId>piao</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.example</groupId>
<artifactId>piao-system</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>piao-system</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>piao-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
四、编写代码
我们在piao-common工程创建一个util包。编写一PiaoUtil工具类。如下图:
在piao-system编写一个控制器,用于访问测试。如下图:
因为我们在piao-system工程里面添加piao-common包的依赖。所以我们的控制可以调用piao-common的工具类。
五、启动项目,验证结果
我们启动piao-system模块。这个一个SpringBoot项目。
访问结果为:
最后我们看到成功调用到了piao-common的工具类。