Я хочу, чтобы maven не отображал информационные сообщения, я хочу видеть только ПРЕДУПРЕЖДЕНИЯ и ОШИБКИ (если есть).
Как я могу этого добиться, желательно изменив командную строку, которая вызывает maven?
Я хочу, чтобы maven не отображал информационные сообщения, я хочу видеть только ПРЕДУПРЕЖДЕНИЯ и ОШИБКИ (если есть).
Как я могу этого добиться, желательно изменив командную строку, которая вызывает maven?
Ответы:
Я провел небольшое расследование, потому что меня тоже интересует решение.
В настоящее время maven 3.1.x использует SLF4J для входа в System.out. Вы можете изменить настройки ведения журнала в файле:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Согласно странице: http://maven.apache.org/maven-logging.html
Я думаю, вы сможете установить уровень журнала по умолчанию для простого регистратора с помощью параметра командной строки, например:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Но я не мог заставить его работать . Я предполагаю, что единственная проблема в том, что maven выбирает уровень по умолчанию из файла конфигурации в пути к классам. Я также попробовал несколько других настроек через System.properties, но все они не увенчались успехом.
Вы можете найти исходный код slf4j на github здесь: slf4j github
Источник simplelogger здесь: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Загрузчик plexus загружает файлы simplelogger.properties.
simplelogger.propertiesсдачу? Когда я изменяю org.slf4j.simpleLogger.warnLevelStringнастройку, mvn compileобновляется соответствующим образом, но, похоже, она игнорирует org.slf4j.simpleLogger.defaultLogLevelнастройку. Он также регистрирует информацию на уровне информации, даже если я установил предупреждение или ошибку.
mvn validate clean install | egrep -v "(^\[INFO\])"
или
mvn validate clean install | egrep -v "(^\[INFO\]|^\[DEBUG\])"
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[DEBUG\]"
mvn validate clean install | findstr /V /B "\[INFO\]" | findstr /V /B "\[WARN\]"
findstrподдерживает регулярное выражение и другие параметры, которые могут сделать его более лаконичным - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Вы можете добиться этого с помощью MAVEN_OPTS, например
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Вместо того, чтобы помещать системное свойство непосредственно в командную строку. (По крайней мере, для maven 3.3.1.)
Подумайте об использовании ~/.mavenrcдля настройки, MAVEN_OPTSесли вы хотите, чтобы журнал для вашего входа был изменен для всех вызовов maven.
help:evaluatetarget для вывода значения, project.versionи этот вывод (хотя, похоже, не проходит slf4j) также был отключен.
Если вы используете Logback, просто поместите этот logback-test.xmlфайл в src/test/resourcesкаталог:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
вы можете добиться этого, используя ниже в самой командной строке
-e for error
-X for debug
-q for only error
например:
mvn test -X -DsomeProperties='SomeValue' [For Debug level Logs]
mvn test -e -DsomeProperties='SomeValue' [For Error level Logs]
mvn test -q -DsomeProperties='SomeValue' [For Only Error Logs]
К сожалению, даже с maven 3 единственный способ сделать это - исправить исходный код.
Вот краткая инструкция, как это сделать.
Клонирование или форк репозитория Maven 3: "git clone https://github.com/apache/maven-3.git "
Отредактируйте журнал org.apache.maven.cli.MavenCli # и измените
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
к
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
В текущей версии снимка это строка 270.
Затем просто запустите «mvn install», ваш новый дистрибутив maven будет расположен в папке «apache-maven \ target \»
См. Эту разницу для справки: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()- если вы можете жить с возможностью настройки.
Самый простой способ - перейти на Maven 3.3.1 или выше, чтобы воспользоваться ${maven.projectBasedir}/.mvn/jvm.configподдержкой.
Затем вы можете использовать любые параметры из поддержки SimpleLogger SL4FJ от Maven для настройки всех регистраторов или конкретных регистраторов. Например, вот как сделать все предупреждения на warnуровне, за исключением PMD, который настроен для входа в error:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Смотрите здесь для более подробной информации о регистрации с Maven.
Я заметил, что при использовании версии 2.20.1 плагина maven sunfire все предупреждения записываются в файл дампа. например/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-modeили-qсделаюmvnменее подробным.