Как подавить некоторые журналы Maven, но сохранить другие выходные данные? - PullRequest
1 голос
/ 16 мая 2019

Я запускаю Maven в среде CI и хочу увидеть некоторые из его выводов журнала - но я не хочу видеть обычные сообщения о загрузке артефактов и т. Д.

Я могу использовать -q, ноэто также подавляет все полезное.

Maven использует slf4j и по умолчанию использует простой бэкэнд slf4j, поэтому нет logging.properties и т. д., и вообще, как бы мне узнать, какой класс генерирует сообщения журнала?

например, если у меня есть

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] XXX JDBC Driver - JDBC 4.2                             [bundle]
[INFO] XXX JDBC Driver aggregate                                   [pom]
[INFO] 
[INFO] -----------------< XXX:XXX >------------------
[INFO] Building XXX JDBC Driver - JDBC 4.2 XXXX           [1/2]
[INFO] -------------------------------[ bundle ]-------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ XXXX-jdbc ---
[INFO] Deleting XXXX/target
[INFO] 
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce-java) @ XXX-jdbc ---
[INFO] 
[INFO] --- build-helper-maven-plugin:1.5:parse-version (parse-version) @ XXXX-jdbc ---
[INFO] 
[INFO] --- properties-maven-plugin:1.0-alpha-2:read-project-properties (default) @ XXXX-jdbc ---
[WARNING] Ignoring missing properties file: XXX/build.local.properties
[INFO] 
[INFO] --- jcp:6.0.1:preprocess (preprocessSources) @ XXX-jdbc ---
[INFO] Added MAVEN property mvn.project.name=XXX JDBC Driver - JDBC 4.2
[INFO] Added MAVEN property mvn.project.version=XX.YY.ZZ
.... blah blah blah ...
-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Running XXX.TestSuite
Tests run: 58, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 6.43 sec

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

1 Ответ

0 голосов
/ 16 мая 2019

Maven использует slf4j-simple . Его конфигурация загружается из пути к классам в файл simplelogger.properties. Вы можете изменить classpath, чтобы сначала поместить свою собственную копию этого файла, но вы также можете переопределить эти свойства, установив системные свойства.

Сначала перезапустите сборку с помощью -D-Dorg.slf4j.simpleLogger.showLogName=true, чтобы вы могли видеть, из каких классов поступают журналы. Затем отрегулируйте уровни журнала по своему усмотрению, установив дополнительные свойства с именем -Dorg.slf4.simpleLogger.log.[[classname]]=[[level]].

Вам также может потребоваться флаг -B (партия) .

Мне удобно устанавливать их в файле .mvn/maven.config в моем проекте, но вместо этого вы можете использовать MAVEN_OPTS или командную строку. Пример .mvn/maven.config может быть:

-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-Dorg.slf4j.simpleLogger.log.com.igormaznitsa.jcp.maven.PreprocessorMojo=warn
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.event.ExecutionEventLogger=warn
-Dorg.slf4j.simpleLogger.log.org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering=warn
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugin.clean.CleanMojo=warn
-Dorg.slf4j.simpleLogger.showLogName=true

Обратите внимание, что помещение этих параметров в simplelogging.properties проекта скомпилированного будет не работать , оно должно быть в classpath maven runtime .

Также помните, что .mvn/maven.config не поддерживает комментарии. Я пытался #, ;, //, /* .. */.

...