一、前言

Maven管理项目的时候,我们通常将一个业务作为一个单独的子业务进行开发处理,这样就需要使用到了聚合打包和聚合工程的创建问题了。在现在的互联网公司,一般是这个开发模式,对于传统的对日开发中,仍然是一个项目,下面一堆数据,我觉得还是maven这种项目管理起来更加的方便快捷。父类项目的作用,可以简单来讲,就是给各个子项目提供了相同的jar包配置,以及子项目包信息。

二、工程分配

工程名工程类型打包类型
emc父类包pom
web界面jar
user-service处理用户的模块jar
passage-service处理文章的模块jar

三、创建工程

这里我们使用idea来创建这样的工程。

3.1 创建父类工程emc

打开idea,点击【Create New Project】

选择Maven项目,点击【Next】

填写Maven项目基本信息,点击【Finish】

父类工程emc就这样创建好了,工程如下图所示

删除不需要的文件,修改emc的pom.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?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.wno704</groupId>
<artifactId>emc</artifactId>
<version>1.0-SNAPSHOT</version>

<packaging>pom</packaging>

<modules>
<module>web</module>
<module>user-service</module>
<module>passage-service</module>
</modules>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<java.version>1.8</java.version>
</properties>

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

</project>

如果子类项目需要快速创建,可以根据下图提示,点击【Create Module】

创建好的工程如下图所示:

需要我们手动去完成子类项目的文件夹等基础的文件创建,这里我们就不重点介绍,具体之类项目的配置文件参考下面子类项目创建。

3.2 创建web项目

在emc模块上面点击【new】-> 【Moudle】

这里我们快速创建一个基本的springboot项目,我们就点击【Spring Initializr】

填写Maven项目基本信息,点击【Next】

由于是web项目,我们需要创建资源的文件夹,我们选择了Spring Web依赖,然后点击【Next】

输入项目存放路径,点击【Finish】

创建好的项目如下图所示

修改web的pom.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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>
<groupId>org.wno704</groupId>
<artifactId>emc</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>web</artifactId>
<name>web</name>
<description>Demo project for Spring Boot</description>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

这个时候发现emc中web模块已经不提示红色了

这个时候,我们单独构件web项目,发现也可以正常构件。

在Maven构件窗口,重新导入项目(对应项目,鼠标邮件点击【Reimport】),或者重启idea

发现父类的jar包依赖已经引入到web项目中

3.3 创建user-service项目

项目基本创建和web项目一样

Maven项目基本信息如下

项目导入路径

修改user-service的pom.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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>
<groupId>org.wno704</groupId>
<artifactId>emc</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>user-service</artifactId>
<name>user-service</name>
<description>Demo project for Spring Boot</description>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

3.4 创建passage-service项目

项目基本创建和web项目一样

Maven项目基本信息如下

项目导入路径

修改passage-service的pom.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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>
<groupId>org.wno704</groupId>
<artifactId>emc</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>passage-service</artifactId>
<name>passage-service</name>
<description>Demo project for Spring Boot</description>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

这样我们的项目就全部创建完毕,如下图所示

四、聚合项目打包

Maven窗口,在父类项目上点击【install】

最终提示项目构建成功

项目打包如下图所示
web项目

user-service项目

passage-service项目