Chcę, aby maven nie wyświetlał komunikatów INFO, chcę widzieć tylko OSTRZEŻENIA i BŁĘDY (jeśli istnieją).
Jak mogę to osiągnąć, najlepiej zmieniając wiersz poleceń, który wywołuje maven?
Chcę, aby maven nie wyświetlał komunikatów INFO, chcę widzieć tylko OSTRZEŻENIA i BŁĘDY (jeśli istnieją).
Jak mogę to osiągnąć, najlepiej zmieniając wiersz poleceń, który wywołuje maven?
Odpowiedzi:
Zrobiłem małe dochodzenie, ponieważ jestem również zainteresowany rozwiązaniem.
Obecnie maven 3.1.x używa SLF4J do logowania się do System.out. Możesz zmodyfikować ustawienia logowania w pliku:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Według strony: http://maven.apache.org/maven-logging.html
Myślę, że powinieneś być w stanie ustawić domyślny poziom dziennika prostego rejestratora za pomocą parametru wiersza poleceń, na przykład:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Ale nie mogłem zmusić go do pracy . Myślę, że jedynym problemem jest to, że maven wybiera domyślny poziom z pliku konfiguracyjnego w ścieżce klas. Wypróbowałem także kilka innych ustawień za pośrednictwem System.properties, ale wszystkie z nich się nie powiodły.
Możesz znaleźć źródło slf4j na github tutaj: slf4j github
Źródło simpleelogger tutaj: simpleeloggera slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Moduł ładujący plexus ładuje plik simplelogger.properties
.
simplelogger.properties
zmiana zadziałała? Kiedy zmieniam org.slf4j.simpleLogger.warnLevelString
ustawienie, mvn compile
aktualizuje się odpowiednio, ale wydaje się, że je ignoruje org.slf4j.simpleLogger.defaultLogLevel
. Rejestruje również na poziomie informacyjnym, nawet jeśli ustawię ostrzeżenie lub błąd.
mvn validate clean install | egrep -v "(^\[INFO\])"
lub
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
obsługuje wyrażenia regularne i inne opcje, które mogą sprawić, że będzie bardziej zwięzły - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Możesz to osiągnąć na przykład za pomocą MAVEN_OPTS
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Zamiast umieszczać właściwość systemową bezpośrednio w wierszu poleceń. (Przynajmniej dla maven 3.3.1.)
Rozważ użycie ~/.mavenrc
do ustawienia, MAVEN_OPTS
jeśli chcesz zmienić rejestrowanie dla swojego loginu we wszystkich wywołaniach maven.
help:evaluate
celu, aby wydrukować wartość, project.version
a to wyjście (choć nie wydaje się, slf4j
że wychodzi) również zostało wyłączone.
Jeśli używasz Logback, po prostu umieść ten logback-test.xml
plik w src/test/resources
katalogu:
<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>
możesz to osiągnąć, używając poniżej w samym wierszu poleceń
-e for error
-X for debug
-q for only error
np .:
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]
Niestety, nawet w przypadku maven 3 jedynym sposobem na to jest łatanie kodu źródłowego.
Oto krótka instrukcja, jak to zrobić.
Clone or fork Maven 3 repo: „git clone https://github.com/apache/maven-3.git ”
Edytuj rejestrowanie org.apache.maven.cli.MavenCli # i zmień
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
do
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
W obecnej wersji migawki znajduje się w linii 270
Następnie uruchom "mvn install", twoja nowa dystrybucja Maven będzie zlokalizowana w folderze "apache-maven \ target \"
Zobacz tę różnicę w celach informacyjnych: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
- jeśli możesz żyć z konfigurowalnością.
Najprostszym sposobem jest uaktualnienie do wersji Maven 3.3.1 lub nowszej, aby skorzystać z${maven.projectBasedir}/.mvn/jvm.config
wsparcia.
Następnie można użyć dowolne opcje z Maven za SL4FJ za SimpleLogger wsparcia skonfigurować wszystkie rejestratory lub poszczególne rejestratory. Na przykład, oto jak zrobić wszystkie ostrzeżenia na warn
poziomie, z wyjątkiem PMD, dla którego skonfigurowano logowanie na error
:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Zobacz tutaj, aby uzyskać więcej informacji na temat logowania za pomocą Mavena.
Zauważyłem, że podczas korzystania z wersji 2.20.1 wtyczki maven sunfire wszystkie ostrzeżenia są zapisywane do pliku zrzutu. na przykład/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
lub-q
będziemvn
mniej gadatliwy.