【发布时间】:2017-12-31 06:21:53
【问题描述】:
在控制台中,自从切换到 Windows 10 后,当我从 CMD 运行时,我会从 Gradle 获得“时髦”的输出。
[0K
[0K
[2A[1m<==-----------> 18% EXECUTING [9s][m[34D[1B[1m> :compileScala[m[15D[1B[2A[1m<==-----------> 18% EXECUTING [10s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [11s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [12s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [13s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [14s][m[35D[2B[2Athere were four feature warnings; re-run with -feature for details
four warnings found
我想这是某种疯狂的控制字符,Gradle 试图明智地为其输出着色,而 Windows 正在解释错误。 PowerShell 和 SBT 工作正常 - 但将控制台“属性”设置从 PowerShell 复制到 CMD 并不能解决问题。
有人解决了吗?
2018-01-28 更新这也发生在我的 Jenkins/Alpine/Docker 设置中,它位于 OSX/macOS/whatnot 之上。不再只是窗户。
...但是...这不会发生在 Surface 笔记本电脑上工作给了我...超级奇怪。 Whatevs gradlew --console=plain 对我来说很好用。
【问题讨论】:
-
CMD 在运行外部程序时恢复原来的控制台模式,这在技术上是正确的做法。显然 PowerShell 不这样做,所以如果你从 PowerShell 启动 CMD,虚拟终端转义应该可以工作——直到有人在 PowerShell 中修复了这个错误。
-
这里的主要错误在 Gradle 中。如果它依赖于虚拟终端支持,那么它应该在控制台中通过
GetConsoleMode获取当前模式,然后在ENABLE_VIRTUAL_TERMINAL_PROCESSING标志中启用它,并通过SetConsoleMode设置新模式。如果此操作失败,则不支持 VT 模式。它要么是旧版本的 Windows,要么是设置了使用旧版控制台的选项。
标签: windows gradle cmd windows-10 windows-console