我无法使Gradle显示(使用突出显示的)从我的构建脚本发出的警告
logger.warn("something something")
该行像其他任何日志行一样发出普通光,它旁边没有警告,我期望--console=rich
带有某种颜色,什么也没有。
此外,仅在日志中的相应位置发出警告。
我希望它们在那里发出,但也要在结尾处发出,或者至少在结尾处发出一些信号,以指示存在警告。 --warning-mode=summary
应该是这样做的,但是没有任何效果。
我尝试了所有可能的组合,例如:
gradle --warning-mode=summary build
gradle build --warning-mode=all
gradle build --warning-mode all
gradle build -Dorg.gradle.warning.mode=all --console=rich --info
etc
我尝试了gradle 5.2和5.4.1。没有警告!
答案 0 :(得分:1)
warn
的 logger
消息总是看起来像这样。默认情况下,它们是可见的;而info
消息仅在使用--info
标志(或更详细)时显示。
实际上logger
是基于slf4j的;但是然后由Gradle设置日志记录格式(他们选择不显示日志级别,也不显示时间戳等)。
调用logger.warn(..)
时,解析为project.logger
。请参见参考Project.getLogger()和Logger。
显示彩色输出的一种方法(请参见this SO post)是使用
之类的Gradle内部APIimport org.gradle.internal.logging.text.StyledTextOutput;
import org.gradle.internal.logging.text.StyledTextOutputFactory;
def out = services.get(StyledTextOutputFactory).create("my-factory")
out.withStyle(StyledTextOutput.Style.FailureHeader).println('Failure message')
out.withStyle(StyledTextOutput.Style.Success).println('Success message')
一种在邮件中显示“ WARN”的肮脏(微不足道)的方法显然是使用logger.warn('WARN: message')
。
最后,代替打印警告,可以通过引发异常来中断任务,以便Gradle停止构建并显示出问题所在,例如。使用以下命令运行gradle taskA
时:
task taskB {
doLast{
throw new Exception("error here")
}
}
task taskA {
dependsOn taskB
}