SpringBoot 拆分多模块
root 模块(父)#
首先新建一个工程
点击Next
继续下一步,勾选好常用的依赖,进入工程,删除不需要的文件夹:src、main、test
pom 文件中把 <package> 标签内容改为 pom
子模块#
点击工程结构按钮,新建 module
点击新建
和创建root一样一路点下去,自己取名字
子模块样例#
注意 parent 标签,artifactId、version是父模块的 artifactId、version
<?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>poison</artifactId> <groupId>cn.techny</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>poison-common</artifactId> <description>常用工具</description> </project>
然后父模块的pom文件中要配置一下 modules 标签
我这边有三个,poison-common,poison-admin、poison-app,都配置在 module 标签中
依赖管理#
dependencyManagement 标签#
<dependencyManagement> <dependencies> <!-- SpringBoot的依赖配置--> <dependency> </dependency> </dependencies> </dependencyManagement>
这个标签是声明依赖,如果子模块如果需要引用,直接引用 groupId 和 artifactId,不需要带版本号,会自动继承父类
如果带上了版本号标签,那么会重新下载并引用,不会继承父类引用
譬如
<dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
SpringBoot 依赖配置#
<!-- SpringBoot的依赖配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.4</version> <type>pom</type> <scope>import</scop> </dependency>
这个可以统一管理 spring-starter 的版本号,注意这里的版本号和 parent 标签的版本号是一样的
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath/> <!-- lookup parent from repository --> </parent>
打包#
<build> <plugins> <plugin> <!-- The plugin rewrites your manifest --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.0.RELEASE</version> <configuration><!-- 指定该Main Class为全局的唯一入口 --> <mainClass>cn.techny.app.AppApplication</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--> </goals> <!--可以生成不含依赖包的不可执行Jar包--> <!-- configuration> <classifier>exec</classifier> </configuration> --> </execution> </executions> </plugin> </plugins> </build>
这里的 repackage,可以把依赖的包都打包到生成的jar包中
用idea运行一下如图
作者:BigBender
出处:https://www.cnblogs.com/BigBender/p/15493991.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!