You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IntelliJ IDEA中用Maven打包Spring Boot微服务项目遇问题求助

解决Spring Boot微服务打包生成空JAR的问题

问题根源分析

从你的pom配置来看,主要有以下几个问题导致repackage目标未执行、生成的JAR不含依赖:

  • 父模块与子模块版本号不一致
  • 业务子模块未明确标识为Spring Boot应用
  • 依赖版本存在冲突风险

具体解决方案

1. 统一父模块与子模块的版本号

父模块pom中的<version>0.0.1</version>与子模块(common、edu-course等)parent节点中的<version>0.0.1-SNAPSHOT</version>版本不匹配,会导致Maven依赖解析异常。将父模块的version修改为0.0.1-SNAPSHOT,保持所有模块版本一致:

<!-- 父模块pom.xml -->
<version>0.0.1-SNAPSHOT</version>

2. 确保业务子模块是Spring Boot应用

业务子模块(如edu-course)作为独立启动的微服务,需要明确引入Spring Boot的web启动依赖(如果是web服务),确保模块被识别为Spring Boot应用,这样spring-boot-maven-plugin的repackage目标才会正常执行。在edu-course的dependencies中添加:

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

3. 规范spring-boot-maven-plugin配置

将插件配置统一放到父模块的pluginManagement中,子模块直接引用即可,避免重复配置:

<!-- 父模块pom.xml的build/plugins节点下添加pluginManagement -->
<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</pluginManagement>

然后子模块(如edu-course)的build/plugins中只需保留插件引用,无需重复配置executions:

<!-- 子模块edu-course的pom.xml -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>xyz.blushyes.EduCourse</mainClass>
            </configuration>
        </plugin>
    </plugins>
    <finalName>edu-course</finalName>
</build>

4. 执行正确的Maven打包流程

不要使用IDEA内置的artifact构建器,直接通过Maven命令执行打包:

  1. 先在父模块执行mvn clean install -DskipTests,将common等依赖模块安装到本地仓库
  2. 再进入业务子模块(如edu-course)执行mvn clean package -DskipTests,或者直接在父模块执行上述命令,Maven会自动按模块顺序构建

5. 修正common模块的依赖版本冲突

common模块中mybatis-plus-boot-starter的版本3.5.3.1与父模块dependencyManagement中定义的3.4.2不一致,会导致依赖版本冲突。将common中的版本移除,继承父模块的版本:

<!-- common模块pom.xml -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <!-- 移除version,使用父模块dependencyManagement中定义的版本 -->
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <!-- 建议将该版本也加入父模块的dependencyManagement中,统一管理 -->
    <version>3.5.3.1</version>
</dependency>

内容的提问来源于stack exchange,提问作者Blushyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:42:18