Jenkins 构建日志出现 `[INFO]` 乱码?原因与完整解决方案(小白必看)

在使用 Jenkins 构建 Java / Maven 项目时,很多人会在 Console Output 里看到类似下面的内容:

text 复制代码
[[1;34mINFO[m] ruoyi-spring-boot-starter-protection ............... [1;32mSUCCESS[m

而在本地终端中,正常应该显示为:

text 复制代码
[INFO] ruoyi-spring-boot-starter-protection ............... SUCCESS [ 0.996 s]

乍一看像是乱码,甚至会怀疑 Maven 或 Jenkins 出了问题。
其实这是一个非常常见、也非常容易解决的问题。

本文将用小白视角,讲清楚:

  • 这类"乱码"到底是什么
  • 为什么 Jenkins 里会出现
  • 如何正确、彻底解决
  • 遇到类似问题该如何自行排查

一、先说结论:这不是乱码,也不是报错

你看到的内容:

text 复制代码
[1;34m
[1;32m
[m

不是乱码,而是 ANSI 转义序列(ANSI Escape Code)

ANSI 转义序列是干嘛的?

它是终端里用来:

  • 给文字上色(蓝色 INFO、绿色 SUCCESS、红色 ERROR)
  • 设置粗体、下划线
  • 控制显示样式

例如:

代码 含义
[1;34m 蓝色加粗
[1;32m 绿色加粗
[m 重置样式

二、为什么本地终端正常,Jenkins 却"乱码"?

原因一句话总结:

Maven 输出了彩色日志,但 Jenkins 默认不会解析 ANSI 颜色控制码。

本地终端为什么没问题?

  • iTerm / Terminal / VS Code Terminal
    👉 默认支持 ANSI 渲染

Jenkins 为什么不行?

  • Jenkins 的 Console Output:

    • 默认是 纯文本
    • 不会自动解析 ANSI 转义序列
    • 于是控制字符被原样打印出来

所以你看到的并不是 Maven 异常,而是 Jenkins 不懂怎么显示颜色


三、解决方案一(推荐):让 Jenkins 支持 ANSI 颜色

这是最推荐、最优雅的方式。

1️⃣ 安装 AnsiColor 插件

路径:

复制代码
系统管理 → 插件管理 → 可选插件

搜索并安装:

复制代码
AnsiColor

安装完成后 重启 Jenkins


2️⃣ 在 Job 中开启 ANSI 渲染(Freestyle 任务)

适用于:自由风格任务(Freestyle Job)

进入你的 Job 配置:

复制代码
Job → 配置 → Build Environment(构建环境)

勾选:

text 复制代码
☑ Color ANSI Console Output
   Color Map:xterm

保存后重新构建。


3️⃣ 效果对比

之前(未开启):

text 复制代码
[[1;34mINFO[m] xxx

之后(开启 AnsiColor):

text 复制代码
[INFO] xxx

并且:

  • INFO 是蓝色
  • SUCCESS 是绿色
  • ERROR 是红色
  • 日志层次非常清晰

四、解决方案二(兜底):直接关闭 Maven 的颜色输出

如果你:

  • 不想装插件
  • 或公司 Jenkins 不允许装插件

可以选择 关闭 Maven 的彩色日志

修改构建命令

在 Jenkins 的「执行 shell」中:

bash 复制代码
mvn -Dstyle.color=never -U -DskipTests package

或(使用 Jenkins 内置 Maven):

bash 复制代码
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/apache-maven-3.6.3/bin/mvn \
-Dstyle.color=never \
-U -DskipTests package

原理

  • -Dstyle.color=never
  • 告诉 Maven:完全不要输出 ANSI 颜色

日志将恢复为纯文本格式。


五、为什么不是在 Environment 页面配置?

很多新手会误以为是在:

复制代码
Job → Environment

实际上这里的选项:

  • Delete workspace before build
  • Secret Text
  • SSH before / after build
  • 时间戳前缀

都和 ANSI 日志无关

👉 真正相关的是「Build Environment」里的 AnsiColor 选项


六、如何自行判断是不是 ANSI 问题?

以后你再遇到类似情况,可以按下面流程快速判断:

✔ 特征 1

日志中出现:

复制代码
[1;xxm

✔ 特征 2

本地终端显示正常,Jenkins 显示异常

✔ 特征 3

构建本身是 SUCCESS

👉 99% 可以确定是 ANSI 颜色问题


七、推荐做法总结(给小白)

场景 推荐方案
日常使用 Jenkins ✅ AnsiColor 插件
不能装插件 -Dstyle.color=never
想要清晰日志 ✅ 插件方案
只要能看 关闭颜色即可

八、结语

这种 [[1;34mINFO[m] 问题:

  • 不是 Maven 错误
  • 不是 Jenkins 构建失败
  • 不是 JDK 问题

而是一个显示层面的小坑

一旦理解了 ANSI 转义序列的原理,这类问题以后基本可以 一眼识别、秒级解决

相关推荐
star-yp4 分钟前
vibe coding 博客管理系统
java·spring boot·spring·ai·ai编程
小江的记录本6 分钟前
【JEECG Boot】JEECG Boot 系统性知识体系全方位结构化总结
java·前端·spring boot·后端·python·spring·spring cloud
Mr.wangh6 分钟前
Spring原理(Bean的生命周期)
java·前端·spring
派大星酷10 分钟前
Java 多线程创建方式
java·开发语言·多线程
棉花骑士9 小时前
【AI Agent】面向 Java 工程师的Claude Code Harness 学习指南
java·开发语言
爱敲代码的小鱼9 小时前
springboot(2)从基础到项目创建:
java·spring boot·spring
迈巴赫车主10 小时前
蓝桥杯19724食堂
java·数据结构·算法·职场和发展·蓝桥杯
i220818 Faiz Ul11 小时前
动漫商城|基于springboot + vue动漫商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·动漫商城系统
海兰11 小时前
【实战】MCP 服务在 Nacos 中注册状态分析与优化
android·java·github·银行系统·银行ai
Makoto_Kimur12 小时前
Java 打印模板大全
java·开发语言·排序算法