如何让Maven在父模块部署失败时仍尝试部署子模块?
可行方案
方案1:通过命令行指定仅部署目标模块
在项目根目录执行以下命令,直接针对Project E执行部署,同时确保其依赖的父模块完成构建但不重复部署:
mvn deploy -pl :ProjectE -am -Dmaven.deploy.skip=true -pl :ProjectE -Dmaven.deploy.skip=false
参数说明:
-pl :ProjectE:指定仅处理Project E模块(冒号用于避免同名模块冲突)-am:自动构建Project E依赖的所有父模块(Project C、Project A),保证E的构建环境正确-Dmaven.deploy.skip=true:全局跳过部署,让其他模块仅完成构建流程,不触发仓库推送- 重复
-pl :ProjectE -Dmaven.deploy.skip=false:单独为Project E开启部署,覆盖全局跳过参数
方案2:配置父模块忽略部署失败
在Project A的pom.xml中添加部署插件配置,使其忽略部署失败,结合-fae参数让Maven执行完所有模块后再返回失败状态:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <configuration> <ignoreFailures>true</ignoreFailures> </configuration> </plugin> </plugins> </build>
之后在根目录执行:
mvn deploy -fae
这样Project A的部署失败会被忽略,Maven会继续完成Project E的1.0.1版本部署,最终仅返回整体失败状态,但目标模块已成功推送。
方案3:临时指定目标模块版本(适用于统一版本管理的项目)
如果项目在父POM中用属性统一管理版本,可通过命令行临时覆盖Project E的版本,同时跳过其他模块部署:
mvn deploy -pl :ProjectE -am -Dproject.version=1.0.1 -Dmaven.deploy.skip=true -pl :ProjectE -Dmaven.deploy.skip=false
这种方式无需修改任何POM文件,适合快速推送单个更新模块。
内容的提问来源于stack exchange,提问作者Ieris19
相关产品推荐
相关产品推荐

