gradle - Gradle未显示突出显示的警告

标签 gradle logging warnings

我无法使用以下方式使Gradle从构建脚本中显示(突出显示)警告

logger.warn("something something")

与其他任何日志行一样,该行以普通形式发出,它的旁边没有WARN,我期望--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。没有警告!

最佳答案

来自warnlogger消息始终看起来像这样。默认情况下,它们是可见的;而info消息仅在使用--info标志(或更详细)时显示。

实际上logger是基于slf4j的;但是然后由Gradle来设置日志记录格式(他们选择不显示日志级别,也不显示时间戳等)。

调用logger.warn(..)时,解析为project.logger。请参见Project.getLogger()Logger的引用。

一种显示彩色输出的方法(请参阅this SO post)是使用Gradle内部API,例如

import 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
}

关于gradle - Gradle未显示突出显示的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590208/

相关文章:

web-applications - 如何等到 Web 应用程序使用 Gradle?

Java 日志记录 : log everything >debug but only when an error occured

java - 如何将 MDC 与线程池一起使用?

javascript - PhpStorm JS 检查 - 来自后端的 JS 变量

android - 禁用 Lint 警告 "The view name suggests this is a number but it does not include a numeric inputType"

android - 如何仅针对发布 buildType 从 Assets 文件夹中排除文件?

android - 在运行时查找是否已使用应用程序编译了库

java - 在 Gradle 项目中使用 Kotlin 进行 Stripe 集成

logging - Openshift - rhc tail 命令

c - methodtest.c :(. text+0x47): 未定义对 `pritnf' 的引用