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

Jenkins构建指定Maven组件成功却返回NOT_BUILT致FTP步骤异常

解决Jenkins多组件Maven项目FTP构建后步骤提示NOT_BUILT的问题

嗨,我之前维护多模块Maven项目时也碰到过一模一样的问题——明明指定构建的模块都成功了,Jenkins却揪着那些没构建的模块标记NOT_BUILT,直接跳过FTP上传步骤。下面是我试过的几个有效解决方案,你可以挨个试试:

原因分析

本质上是Jenkins的构建结果判定逻辑和Maven部分模块构建的场景不兼容:Jenkins默认会检查所有模块的状态,那些没被-pl指定的模块会被标记为NOT_BUILT,导致Jenkins认为整体构建状态不符合“成功”标准,进而跳过后续的FTP步骤,哪怕你要上传的模块都已经构建好了。

解决方案

1. 手动强制设置构建结果为成功(最直接)

在FTP步骤之前,添加一个Groovy脚本步骤(自由风格项目)或者直接在Pipeline里写一行代码,强制把当前构建结果改成SUCCESS:

currentBuild.result = 'SUCCESS'

如果是自由风格项目找不到Groovy步骤,也可以用shell脚本(Linux/macOS):

# 注意替换成你的Jenkins地址、项目名,以及你的用户名和API令牌
curl -X POST "http://your-jenkins-url/job/your-project-name/${BUILD_NUMBER}/postBuildResult" \
--data-urlencode "result=SUCCESS" \
--user your-username:your-api-token

这个方法能直接绕过Jenkins的状态判定,让FTP步骤正常触发。

2. 调整FTP步骤的触发条件(更严谨)

如果不想强制改构建结果,可以修改FTP插件的执行条件:

  • 先把FTP步骤的“Run only if build is successful”改成**“Run regardless of build result”**
  • 然后在FTP步骤之前加一个shell脚本步骤,用来检查指定模块是否真的构建成功:
# 检查构建日志里是否同时存在两个模块的成功标记
if grep -q "component-x ............................ SUCCESS" "${BUILD_LOG}" && \
   grep -q "component-y ............................ SUCCESS" "${BUILD_LOG}"; then
    echo "目标模块构建成功,准备执行FTP上传"
    exit 0
else
    echo "目标模块构建失败,跳过FTP上传"
    exit 1
fi
  • 最后把FTP步骤设置为**“Run only if previous step is successful”**
    这样只有当你指定的两个模块真的成功时,才会执行FTP上传,既解决了状态问题,又保留了错误判断的逻辑。

3. 优化Maven构建命令,让Jenkins正确识别状态

尝试在Maven命令里加上-am参数(构建指定模块及其依赖),虽然你说依赖已经构建成功,但有时候Jenkins的Maven插件需要看到完整的依赖链状态才能正确判定:

clean install -pl component-x,component-y -am -P develop -X

另外,也可以检查Jenkins的Maven插件配置,看看有没有“只关注指定模块状态”的选项,不同版本的插件位置可能不一样,你可以找一下。

4. 调整Jenkins的构建结果判定规则

如果你的项目是自由风格,可以在项目配置的“构建”部分,找到Maven构建的高级选项,看看有没有“忽略未构建模块的状态”之类的设置;如果是全局配置,检查Jenkins全局工具配置里的Maven插件设置,有没有相关的判定规则可以调整。

总结

我当时用的是第一种方法(强制改构建结果),最快解决问题;如果想要更严谨的逻辑,第二种方法更合适。你可以根据自己的项目需求选一个试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:29:09