springboot项目多模块工程==1搭建

1、新建父工程

采用springboot工程作为父工程搭建方便依赖选择,在这个基础上进行maven的pom父子模块结构调整。该工程选择mave进行依赖管理

2、springboot 版本及相关依赖选择

3、删除工程目录src,并修改pom

由于该父工程只作为依赖的统一管理,因此将父pom的packaging改为pom。

4、新建单独springboot子模块

并将子模块中application.yml的端口改为 8088,用于打包后测试

4.1 将工程pom为父子模块的maven工程

  • 子模块pom
java 复制代码
将子模块的pom的parent该为父工程的groupId、artifactId、version
<parent>
        <groupId>org.javatrip</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>


添加子模块打包为jar
<packaging>jar</packaging>

<properties>
		<!-- 属性变量,打包使用 -->
        <spring.boot.version>3.3.1</spring.boot.version>
</properties>

 <build>
        <!-- 设置构建的 jar 包名 -->
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <!-- 打包 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  • 父工程pom
java 复制代码
在父工程pom中添加子模块,这样就将工程改造为springboot使用maven管理的父子工程 
   <modules>
        <module>demo</module>
    </modules>

5、工程打包编译

java 复制代码
控制台使用命令
mvn clean package
[注意]如果编译打包失败,springboot3.3.1很大可能为maven的版本过低,更换3.6以上版本。根据错误提示进行处理。将原有本地仓库中下载的包先删除掉

6、验证结果

进入到parent\demo\target下查看 demo-0.0.1-SNAPSHOT.jar包的大小,如果不是可执行jar,包就很小。

执行 java -jar demo-0.0.1-SNAPSHOT.jar,查看是否运行正常

7、【额外说明】打包可执行的jar

打包为可执行的jar,目的是工程项目运行,

在pom中配置jar生成jar文件。这个pom所在模块必须包含主类main class,才能生成可执行jar

如果没有包含则编译失败 Execution default of goal org.springframework.boot:spring-boot-maven-plugin:2.7.18:repackage failed: Unable to find main class

java 复制代码
<build>
        <!-- 设置构建的 jar 包名 -->
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <!-- 打包 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  1. 如果项目不是maven多模块工程,则将该配置添加到pom中则系统打包最终只有一个jar,也就是系统运行jar.
  2. 项目是maven多模块工程,每个模块都需要打包为可执行的jar, 则可以将该配置放在父pom中或者每个子模块的pom中,都可以生成可执行jar
  3. 项目是maven多模块工程,只有运行主模块才打包为可执行jar ,则该配置只能配置到运行主模块的的pom文件中,其他模块不需要配置。编译打包生成,主类模块为可执行jar,其他模块生成依赖jar(不能独立运行)
相关推荐
IT_陈寒2 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰2 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
用户8356290780513 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
小满zs3 小时前
Go语言第二章(小无相功)
后端·go
用户8356290780513 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k3 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生3 小时前
Xiuno BBS X版 用户封禁系统
后端
karry_k3 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
ServBay4 小时前
不会写代码也能建站?AI 时代,非技术创始人如何从零搭建自己的 Web 项目
后端·mcp