Можно ли сделать Maven менее подробным?

106

Maven выводит слишком много строк вывода на мой вкус (мне нравится способ Unix: нет новостей - это хорошие новости).

Я хочу избавиться от всех строк [INFO], но мне не удалось найти упоминания об аргументе или настройках конфигурации, которые управляют подробностью Maven.

Нет ли LOG4J-подобного способа установить уровень журнала?

Асаф Бартов
источник
2
С Maven 3.6.1 (апрель 2019 г., 10+ лет спустя) mvn --no-transfer-progress ...(или mvn -ntpдля шорт) должно быть подходящим решением. Смотрите мой ответ ниже .
VonC

Ответы:

133

Вы можете попробовать ключ -q .

-q, - quiet Тихий вывод - показывать только ошибки

Хорхе Феррейра
источник
2
@sheki: Чтобы уточнить, эта опция не отключает отладочные сообщения регистратора - вам нужно отключить это в настройках регистратора. Например, если вы используете логбэк, включение файла src / test / resources / logback-test.xml в ваш проект позволит вам настроить уровень ведения журнала на «выключено» на этапе тестирования. Это все очистит.
codeturner
10
Моя проблема в том, что -qэто слишком тихо. Я запускаю maven под CI, и я хочу видеть шаги, которые он предпринимает (для отслеживания прогресса), но индикаторы загрузки портят отображение не-ANSI. Есть ли способ отключить только индикаторы прогресса загрузки?
Guss
6
@Guss: Если вы хотите, чтобы исчезли только сообщения о загрузке / скачивании, используйте -Bдля включения пакетного режима (в любом случае это должно быть в вашей системе CI!), А затем установите MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"для уничтожения информации о ходе загрузки.
ankon 06
1
В maven 3.5.x мне действительно нужно enable --batch-mode( -B), чтобы -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warnтрюк работал.
Auke
если вы склонны, я представил предлагаемое решение, совместимое с интерактивным режимом issues.apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray
27

-q, как сказано выше, это то, что вам нужно. Альтернативой может быть

-B , --batch-mode Запускать в неинтерактивном (пакетном) режиме. Пакетный режим необходим, если вам нужно запустить Maven в неинтерактивной среде непрерывной интеграции. При работе в неинтерактивном режиме Maven никогда не перестанет принимать ввод от пользователя. Вместо этого он будет использовать разумные значения по умолчанию, когда потребуется ввод.

И также сократит выходные сообщения более или менее до самого необходимого.

Станислав
источник
используется для неинтерактивного режима, что помогает при автоматизации прогонов
Станислав
22

Моя проблема в том, что -q работает слишком тихо. Я запускаю maven под CI

В Maven 3.6.1 (апрель 2019 г.) теперь у вас есть возможность подавлять процесс передачи при загрузке / выгрузке в интерактивном режиме .

mvn --no-transfer-progress ....

или короче:

mvn -ntp ... ....

Именно это предложил Рэй в комментариях к MNG-6605 и PR 239 .

VonC
источник
Это решение подавляет сообщения загрузки, а также загрузки, что обычно нежелательно для deployзадачи
Хиликус
6

Используйте параметры командной строки -q или --quiet

Sietse
источник
2

Если вы хотите избавиться только от [INFO]сообщений, вы также можете:

mvn ... | fgrep -v "[INFO]"

Чтобы подавить все выходы (кроме ошибок), вы можете перенаправить stdoutих /dev/nullс помощью:

mvn ... 1>/dev/null

(Это работает, только если вы используете bash(или аналогичные оболочки) для запуска команд Maven.)

m13r
источник
0

Maven 3.1.x использует SLF4j для ведения журнала, инструкции по его настройке можно найти на https://maven.apache.org/maven-logging.html.

Короче говоря: либо изменить ${MAVEN_HOME}/conf/logging/simplelogger.propertiesили установить то же свойство , с помощью MAVEN_OPTSпеременного окружения.

Например: установка MAVEN_OPTSдля -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnконфигурируешь протоколирование передачи слушателя пакетного режима, и -Dorg.slf4j.simpleLogger.defaultLogLevel=warnустанавливает уровень журнала по умолчанию.

Анкон
источник
0

Существующий ответ поможет вам фильтровать на основе уровня журнала использования --quiet. Я обнаружил, что многие сообщения INFO полезны для отладки, однако сообщения журнала артефактов загрузки, такие как следующие, были шумными и бесполезными.

Downloading: http://nexus:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata.xml

Я нашел такое решение:

https://blogs.itemis.com/en/in-a-nutshell-removing-artifact-messages-from-maven-log-output

mvn clean install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
errant.info
источник