在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命令执行打包:
- 先在父模块执行
mvn clean install -DskipTests,将common等依赖模块安装到本地仓库 - 再进入业务子模块(如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
相关产品推荐
相关产品推荐

