tra*_*ton 27 groovy logging build gradle
我在谷歌上看过这个,但Gradle网站上似乎没有任何文档,甚至在论坛上讨论过这个问题的人.
我在我的Mac上安装了Gradle(10.8.2,ML)并且正在构建一个自定义的build.gradle脚本.当我调用println()时,我想使输出变为彩色(如红色错误,绿色信息等).如何在我的gradle构建脚本中执行此操作?
这是我到目前为止的代码示例:
def proc = "echo `DATE`".execute()
proc.in.eachLine {line -> println line}
proc.err.eachLine {line -> println 'ERROR: ' + line}
Run Code Online (Sandbox Code Playgroud)
在这个gradle论坛上,他们讨论了各种样式,如normal,header,userinput,identifier,description,progressstatus,failure,info和error,作为StyledTextOutput类的一部分.看起来这是一个内部类.是否有一种简单的方法可以在不导入大量软件包的情况下利用Gradle/Groovy的彩色打印功能?
tra*_*ton 26
找到答案了!根据这个gradle论坛帖子,没有用于着色记录器输出的公共接口.您可以自由使用内部类,但在将来的版本中可能会更改.在gradle脚本中,放在顶部:
老年人:
import org.gradle.logging.StyledTextOutput;
import org.gradle.logging.StyledTextOutputFactory;
import static org.gradle.logging.StyledTextOutput.Style;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
(我仍然没有想出如何将其移动到init.gradle文件.)然后不久,定义
def out = services.get(StyledTextOutputFactory).create("blah")
Run Code Online (Sandbox Code Playgroud)
我仍然不确定create method的字符串中需要什么(它似乎没有影响任何东西).然后在你的任务中,
out.withStyle(Style.Info).println('colored text')
Run Code Online (Sandbox Code Playgroud)
这应该适用于所有类别:正常,标题,用户输入,标识符,描述,progressstatus,失败,信息和错误.如果要自定义每个类别的颜色,请执行以下步骤:将以下内容添加到〜/ .gradle目录(或其他选项)中的init.gradle文件中:
System.setProperty('org.gradle.color.error', 'RED')
Run Code Online (Sandbox Code Playgroud)
然后用上面的列表中的任何一个替换"错误"类别.
只是完成接受的答案的其他信息.这是默认样式gradle 4.10
StyledTextOutput.Style.values().each {
out.style(it).println("This line has the style $it")
}
Run Code Online (Sandbox Code Playgroud)
此外,您可以创建多色线,如a StringBuilder
out.style(Style.ProgressStatus).text('This is ').style(Style.Failure).text('a multicolor ').style(Style.Identifier).println('line')
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个工作示例:
import org.gradle.internal.logging.text.StyledTextOutput
import org.gradle.internal.logging.text.StyledTextOutputFactory
import org.gradle.internal.logging.text.StyledTextOutput.Style
def out = services.get(StyledTextOutputFactory).create("an-ouput")
out.style(Style.ProgressStatus).text('This is ').style(Style.Failure).text('a multicolor ').style(Style.Identifier).println('line')
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以利用 Gradle/Groovy 的彩色打印功能,而无需导入大量包?
为了探索更多选项,无需导入包,您可以直接使用ANSI 转义码(不是严格的 Gradle/Groovy 技术)来格式化输出。以下是一个工作示例:
task myTask {
def styler = 'black red green yellow blue magenta cyan white'
.split().toList().withIndex(30)
.collectEntries { key, val -> [(key) : { "\033[${val}m${it}\033[0m" }] }
doLast {
println "Message: ${styler['red']('Hello')} ${styler['blue']('World')}"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12012 次 |
| 最近记录: |