Я хочу, чтобы 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:evaluate
target для вывода значения, 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
менее подробным.