SpringBoot maven 多模块构建项目
maven 多模块

前言,这篇记录来自于,一台机器部署两个springcloud项目引发的JVM内存不足的BUG,于是乎,不玩cloud了,项目业务没有达到使用规模,只有一台机器,不集群,不分布式,领导一声令下!“给我改成boot,出一个war,我要扔到tomcat中!” 啊哈哈哈哈
话不多说
1.新建一个springboot war工程,把无关的文件删除,最终如下图
2.父工程的pom文件中加
<packaging>pom</packaging>
2.选中父工程,右键 new ->Moudle
3.选择maven工程
4.把父工程中刚才保留的src目录下的三个文件,拷贝到main模块的相应位置下,然后删除父工程的src目录
main模块放置启动类和配置文件,主要的作用的通过配置文件控制各模块之间的依赖
5.在main模块的pom文件中添加
<packaging>war</packaging>
6.把父工程的pom文件中的打包的代码,拷贝到main模块的pom文件
<build>
<finalName>redLine</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
7.在main模块的pom添加sys模块的依赖
<dependencies>
<dependency>
<groupId>com</groupId>
<artifactId>hx-sys</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
8.maven clean package
可以看到sys的包已经打到最终的redLine.war
至此一个maven多模块的结构已经搭建完毕
9.最终的目录结构
10.父工程pom文件
<?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>
<modules>
<module>hx-main</module>
<module>hx-sys</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>gistone</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>gistone</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
main模块的pom文件
<?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>gistone</artifactId>
<groupId>com</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>hx-main</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com</groupId>
<artifactId>hx-sys</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>redLine</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
sys模块的pom文件
<?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>gistone</artifactId>
<groupId>com</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>hx-sys</artifactId>
</project>
为什么要搞多模块,Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。