Я хочу не допустити, щоб Maven відображав INFO-повідомлення, я хочу бачити лише ПОПЕРЕДЖЕННЯ та ПОМИЛКИ (якщо такі є).
Як я можу досягти цього, бажано, змінивши командний рядок, який викликає maven?
Я хочу не допустити, щоб Maven відображав INFO-повідомлення, я хочу бачити лише ПОПЕРЕДЖЕННЯ та ПОМИЛКИ (якщо такі є).
Як я можу досягти цього, бажано, змінивши командний рядок, який викликає maven?
Відповіді:
Я провів невелике розслідування, тому що мене також цікавить рішення.
Відповідно до http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
В даний час 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 підбирає рівень за замовчуванням з конфігураційного файлу на classpath. Я також спробував пару інших налаштувань через System.properties, але всі вони не вдалися.
Ви можете знайти джерело slf4j на github тут: slf4j github
Джерело Simplelogger тут: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Навантажувач сплетення завантажує 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
цілі, щоб надрукувати значення, project.version
і цей вихід (хоча, схоже, не пройшов slf4j
) також вимкнувся.
Якщо ви використовуєте Зворотний зв'язок, просто покладіть цей 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 repo: "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 Maven SL4FJ для налаштування всіх реєстраторів або окремих реєстраторів. Наприклад, ось як зробити всі попередження на 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 , всі попередження записуються у файл dumpstream. напр/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
або-q
зробитьmvn
менш багатослівним.