Gradle не показывает выделенные предупреждения - PullRequest
0 голосов
/ 14 июня 2019

Я не могу сделать предупреждения Gradle Show (выделенные), которые я генерирую из моего скрипта сборки, используя

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. Предупреждений нет!

1 Ответ

1 голос
/ 15 июня 2019

warn сообщения от logger всегда выглядят так. Они видимы по умолчанию; в то время как info сообщения отображаются только при использовании флага --info (или более подробного).

На самом деле logger основан на slf4j; но затем Gradle устанавливает формат ведения журнала (и они решили не отображать ни уровень журнала, ни метку времени и т. д.)

При вызове logger.warn(..), который разрешается до project.logger. См. Ссылку для Project.getLogger () и для Logger .


Один из способов показать цветной вывод (см. этот пост ) - использовать внутренний API Gradle, например

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