Чи можна Мейвен зробити менш багатослівним?


104

Мейвен виділяє занадто багато ліній виводу на мій смак (мені подобається спосіб Unix: жодна новина не є гарною новиною).

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

Чи не існує способу встановлення рівня журналу, подібного до LOG4J?


2
З Maven 3.6.1 (квітень 2019, 10+ років пізніше) mvn --no-transfer-progress ...(або mvn -ntpдля шортів) має бути адекватним рішенням. Дивіться мою відповідь нижче .
VonC

Відповіді:


132

Ви можете спробувати перемикач -q .

-q, - тихий Тихий вихід - показують лише помилки


2
@sheki: Щоб уточнити, ця опція не вимикає повідомлення про налагодження журналу - потрібно вимкнути це за допомогою налаштувань реєстратора. Наприклад, якщо ви використовуєте logback, включаючи файл src / test / resource / logback-test.xml у вашому проекті, ви зможете налаштувати рівень реєстрації для "вимкнення" під час тестової фази. Це очистить все.
кодетернер

10
Моя проблема в тому, що -qзанадто тихо. Я запускаю Maven під CI, і я хочу побачити кроки, які він виконує (для відстеження прогресу), але індикатори завантаження створюють безлад для відображення не-ANSI. Чи є спосіб виключити лише показники прогресу завантаження?
Гасс

6
@Guss: Якщо ви хочете, щоб повідомлення, які завантажуються / завантажувались, перейшли, використовуйте -Bдля ввімкнення пакетного режиму (у будь-якому випадку це має бути у вашій системі CI!), А потім встановіть, MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"щоб знищити інформацію про хід завантажень.
ankon

1
У maven 3.5.x мені фактично потрібно включити --batch-mode( -B), щоб -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warnтрюк працював.
Ойк

якщо ви схильні, я подав запропоноване рішення, сумісне з проблемами інтерактивного режиму.apache.org/ jira/
Рей

27

-q, як сказано вище, те, що вам потрібно. Альтернативою може бути

-B , - пакетний режим Запуск у неінтерактивному (пакетному) режимі Пакетний режим є важливим, якщо вам потрібно запустити Maven у неінтерактивному середовищі безперервної інтеграції. Працюючи в неінтерактивному режимі, Maven ніколи не перестане приймати дані від користувача. Натомість він використовуватиме розумні значення за замовчуванням, коли вимагає введення.

А також зменшить вихідні повідомлення більш-менш до основного.


використовується для неінтерактивного режиму, що допомагає при автоматизації запуску
Станіслав

22

Моя проблема полягає в тому, що -q занадто тихо. Я бігаю Maven під CI

З Maven 3.6.1 (квітень 2019 року) тепер у вас є можливість придушити хід передачі під час завантаження / завантаження в інтерактивному режимі .

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

або коротше:

mvn -ntp ... ....

Саме це Рей запропонував у коментарях до MNG-6605 та PR 239 .


Це рішення пригнічує повідомлення для завантаження, а також завантаження, що зазвичай не бажано в deployзавданні
Хілікус,


6

Використовуйте параметри командного рядка -q або --quiet


2

Якщо ви хочете лише позбутися від тих [INFO]повідомлень, які ви також можете зробити:

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

Для придушення всіх виходів (крім помилок) можна перенаправити stdoutна /dev/nullз:

mvn ... 1>/dev/null

(Це працює лише в тому випадку, якщо ви використовуєте bash(або подібні оболонки) для запуску команд Maven.)


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.