在使用 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 转义序列的原理,这类问题以后基本可以 一眼识别、秒级解决。