Spring Boot多模块项目mvn启动报错及部署jar包获取问题咨询
问题原因
你在父项目根目录执行mvn spring-boot:start命令触发了报错,父项目打包类型为pom,本身不包含可执行的启动类与业务代码,Spring Boot Maven插件尝试通过RMI连接应用实例时无法找到对应运行的进程,因此抛出连接重置错误。
同时你当前的Maven配置存在不合理项:父工程的dependencies节点下定义的所有依赖会被全部子模块继承,会造成工具类子模块(如IReview-domain、IReview-exceptions)存在冗余依赖;且spring-boot-maven-plugin全局配置在父工程,会导致非启动类子模块打包异常。
问题1解答:可执行Jar包获取方式
- 先调整Maven配置:
- 将父工程pom.xml中spring-boot-maven-plugin的
<skip>值改为true - 在启动类所在的子模块(即IReview-main)的pom.xml中单独添加spring-boot-maven-plugin配置,设置
<skip>false</skip>,同时指定启动类全路径
- 将父工程pom.xml中spring-boot-maven-plugin的
- 在父工程根目录执行
mvn clean package完成全模块构建 - 构建完成后,可执行Jar包存放在
IReview-main/target/目录下,命名格式一般为IReview-main-1.0-SNAPSHOT.jar
问题2解答:正确的命令行启动方式
方式1:Jar包直接启动(推荐用于生产部署)
构建完成后直接执行如下命令:
java -jar IReview-main/target/IReview-main-1.0-SNAPSHOT.jar
需要调整启动参数时直接加在命令末尾即可,比如指定端口:java -jar xxx.jar --server.port=8080
方式2:Maven插件启动(推荐用于本地开发调试)
两种执行路径可选:
- 进入IReview-main子模块的根目录,执行
mvn spring-boot:run - 在父工程根目录执行时指定模块:
mvn spring-boot:run -pl IReview-main
注意:
spring-boot:start是后台启动命令,一般用于集成测试场景,日常开发调试用spring-boot:run即可直接在前台输出应用日志。
配置优化建议
父工程的公共依赖建议移到dependencyManagement节点下统一管理版本,子模块按需引入所需依赖,避免子模块出现冗余依赖,符合多模块架构的职责拆分原则。
内容的提问来源于stack exchange,提问作者Drago Ban
相关产品推荐
相关产品推荐

