Добавьте количество предупреждений, встречающихся как "заполнитель" maven - PullRequest
1 голос
/ 23 февраля 2020

В maven вы можете использовать 'заполнители', например ${maven.build.timestamp}. Есть ли способ, которым я мог бы получить заполнитель, скажем, ${warnings}, который содержит количество предупреждений, возникших при создании проекта?

Пример:

"[!] This Build is version ${project.version}, and was compiled on ${maven.build.timestamp} UTC." + System.lineSeparator() + "[!] ${warnings} occured while building this build, and there were ${errors} errors."

1 Ответ

2 голосов
/ 23 февраля 2020

Maven не выполняет никакой постобработки с файлами журналов - он использует только реализацию ведения журнала SLF4J, которая имеет некоторую конфигурацию . Это означает, что Maven не имеет никакого свойства, связанного с файлами журналов, которое бы показывало счетчик сообщений определенного типа. Это означает, что вам придется выполнить эту часть самостоятельно, а затем прикрепить ее к свойству, чтобы можно было использовать замену свойства. Это делает это относительно трудоемкой задачей с небольшим вознаграждением.

Аргументы, почему оно того не стоит

  1. Формат предупреждающего сообщения зависит от индивидуального плагины - это означает, что если разработчики плагинов решили, что они поместят несколько операторов журнала предупреждений для одного предупреждения, вы не сможете решить, одно это предупреждение или три. То же самое будет, если по какой-то причине они решили поместить все предупреждения в одну запись журнала.
  2. Нет смысла подсчитывать ошибки - условием для API Maven является исключение, как только вы получаете ошибку во время выполнения плагина, который вы не можете обработать, и тем самым завершаете сборку с ошибкой.
  3. Решение этой проблемы требует обработки файла журнала - это означает, что необходимо перенаправить поток и, тем самым, ограничение функциональности.

Хорошо, я все равно хочу, что мне делать?

Вам просто нужно:

  1. Перенаправить вывод журнала SLF4J в файл (что поясняется в приведенной ссылке и SLF4J javado c)
  2. В конце жизненного цикла Maven выполните постобработку журнала файл, подсчитать сообщения, которые имеют определенный уровень ведения журнала (например, WARN), и сохранить этот номер в свойстве (например, предупреждения) вес arnings})

Учитывая все это, я бы сказал, что не стоит затрачивать усилий только на отображение количества предупреждений.

...