logging - 渐变颜色输出

我在 Google 上查找过这个,但 Gradle 网站上似乎没有任何文档,甚至没有人在论坛中讨论这个。

我在我的 Mac(10.8.2,ML)上安装了 Gradle,并且正在构建一个自定义 build.gradle 脚本。当我调用 println() 时,我想让输出着色(如红色错误、绿色信息等)。如何在我的 gradle 构建脚本中执行此操作?

这是我到目前为止的代码示例:

def proc = "echo `DATE`".execute()
proc.in.eachLine {line -> println line}
proc.err.eachLine {line -> println 'ERROR: ' + line}

在 this gradle forum 上,作为 StyledTextOutput 类的一部分,他们讨论了各种样式,例如 normal、header、userinput、identifier、description、progressstatus、failure、info 和 error。看起来这是一个内部类。有没有一种简单的方法可以在不导入大量包的情况下利用 Gradle/Groovy 的彩色打印功能?

最佳答案

找到答案了!根据this gradle forum post ,没有用于为记录器的输出着色的公共(public)接口(interface)。您可以自由使用内部类,但在未来的版本中可能会发生变化。在 gradle 脚本中,放在顶部:

旧 Gradle:

import org.gradle.logging.StyledTextOutput;
import org.gradle.logging.StyledTextOutputFactory;
import static org.gradle.logging.StyledTextOutput.Style;

Gradle 3.3+:

import org.gradle.internal.logging.text.StyledTextOutput;
import org.gradle.internal.logging.text.StyledTextOutputFactory;
import static org.gradle.internal.logging.text.StyledTextOutput.Style;

(我还没有弄清楚如何将它移动到 init.gradle 文件中。)然后不久,定义

def out = services.get(StyledTextOutputFactory).create("blah")

我仍然不确定 create 方法的字符串中需要包含什么(它似乎还没有影响任何东西)。然后在你的任务中,

out.withStyle(Style.Info).println('colored text')

这应该适用于所有类别:正常、标题、用户输入、标识符、描述、进度状态、失败、信息和错误。如果要自定义每个类别的颜色,则需要额外的步骤,将以下内容添加到 ~/.gradle 目录(或 other options)中的 init.gradle 文件中:

System.setProperty('org.gradle.color.error', 'RED')

然后将“错误”类别替换为上述列表中的任何类别。

https://stackoverflow.com/questions/14516693/

相关文章:

iphone - Xcode:基于架构的条件build设置(设备(ARM)与模拟器(i386))

Android Studio - 错误 :Program type already present

build - 如何在 Mac 上构建和安装 Valgrind?

java - 构建失败 java.lang.OutOfMemoryError : Java heap

android - 使用 log4j 更新 Android Studio 后 gradle 构建出错

r - 关于 .Rbuildignore 正确使用 devtools 和/或 RStudio

eclipse - 项目 XXX 在其构建路径上没有任何 GWT SDK

ruby - 安装 Xcode 4.2 后无法使用 native 扩展构建 json (1.6.3)

visual-studio-2010 - 项目引用和项目依赖有什么区别?

c++ - 在一个 Eclipse 项目中构建多个二进制文件