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.propertieszmiana zadziałała? Kiedy zmieniam org.slf4j.simpleLogger.warnLevelStringustawienie, mvn compileaktualizuje 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\]"
findstrobsł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 ~/.mavenrcdo ustawienia, MAVEN_OPTSjeśli chcesz zmienić rejestrowanie dla swojego loginu we wszystkich wywołaniach maven.
help:evaluatecelu, aby wydrukować wartość, project.versiona 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.xmlplik w src/test/resourceskatalogu:
<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 warnpoziomie, 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-modelub-qbędziemvnmniej gadatliwy.