Ich möchte verhindern, dass Maven INFO-Meldungen anzeigt. Ich möchte nur WARNUNGEN und FEHLER (falls vorhanden) sehen.
Wie kann ich dies erreichen, vorzugsweise durch Ändern der Befehlszeile, die maven aufruft?
Ich möchte verhindern, dass Maven INFO-Meldungen anzeigt. Ich möchte nur WARNUNGEN und FEHLER (falls vorhanden) sehen.
Wie kann ich dies erreichen, vorzugsweise durch Ändern der Befehlszeile, die maven aufruft?
Antworten:
Ich habe eine kleine Untersuchung durchgeführt, weil ich auch an der Lösung interessiert bin.
Derzeit verwendet Maven 3.1.x SLF4J, um sich bei System.out anzumelden. Sie können die Protokollierungseinstellungen in der Datei ändern:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Laut der Seite: http://maven.apache.org/maven-logging.html
Ich denke, Sie sollten in der Lage sein, die Standardprotokollstufe des einfachen Loggers über einen Befehlszeilenparameter wie folgt einzurichten:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Aber ich konnte es nicht zum Laufen bringen . Ich denke, das einzige Problem dabei ist, dass Maven die Standardstufe aus der Konfigurationsdatei im Klassenpfad übernimmt. Ich habe auch einige andere Einstellungen über System.properties ausprobiert, aber alle waren nicht erfolgreich.
Die Quelle von slf4j auf github finden Sie hier: slf4j github
Die Quelle des Simpleloggers hier: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Der Plexuslader lädt die simplelogger.properties
.
simplelogger.properties
Änderung zum Laufen gebracht? Wenn ich die org.slf4j.simpleLogger.warnLevelString
Einstellungen mvn compile
entsprechend ändere, wird die Einstellung anscheinend ignoriert org.slf4j.simpleLogger.defaultLogLevel
. Es protokolliert auch auf der Info-Ebene, selbst wenn ich das auf Warnung oder Fehler eingestellt habe.
mvn validate clean install | egrep -v "(^\[INFO\])"
oder
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
Regex und andere Optionen unterstützt, die es prägnanter machen könnten - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Dies können Sie beispielsweise mit MAVEN_OPTS erreichen
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Anstatt die Systemeigenschaft direkt in die Befehlszeile einzufügen. (Zumindest für Maven 3.3.1.)
Erwägen Sie die Verwendung ~/.mavenrc
für die Einstellung, MAVEN_OPTS
wenn Sie möchten, dass die Protokollierung für Ihre Anmeldung über alle Maven-Aufrufe hinweg geändert wird.
help:evaluate
Ziel ausgeführt wurde, um den Wert von zu drucken, project.version
und diese Ausgabe (obwohl sie nicht durchzukommen scheint slf4j
) wurde ebenfalls deaktiviert .
Wenn Sie Logback verwenden, legen Sie diese logback-test.xml
Datei einfach in einem src/test/resources
Verzeichnis ab:
<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>
Sie können dies erreichen, indem Sie unten in der Befehlszeile selbst verwenden
-e for error
-X for debug
-q for only error
z.B :
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]
Leider ist selbst mit Maven 3 die einzige Möglichkeit, dies zu tun, das Patchen des Quellcodes.
Hier ist eine kurze Anleitung, wie das geht.
Klon oder Gabel Maven 3 Repo: "Git-Klon https://github.com/apache/maven-3.git "
Bearbeiten Sie die Protokollierung org.apache.maven.cli.MavenCli # und ändern Sie sie
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
zu
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
In der aktuellen Snapshot-Version befindet es sich in Zeile 270
Führen Sie dann einfach "mvn install" aus. Ihre neue Maven-Distribution befindet sich im Ordner "apache-maven \ target \"
Siehe diesen Unterschied als Referenz: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
-, wenn Sie mit der Konfigurierbarkeit leben können.
Der einfachste Weg ist ein Upgrade auf Maven 3.3.1 oder höher, um die ${maven.projectBasedir}/.mvn/jvm.config
Unterstützung zu nutzen.
Anschließend können Sie alle Optionen aus der SimpleLogger- Unterstützung von Maven SL4FJ verwenden, um alle Logger oder bestimmte Logger zu konfigurieren. Im Folgenden finden Sie beispielsweise eine Anleitung zum Auslösen aller Warnungen auf warn
Ebene, mit Ausnahme der PMD, die für die Protokollierung konfiguriert ist error
:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Sehen Sie hier , um weitere Informationen mit Maven Anmeldung.
Ich habe festgestellt, dass bei Verwendung der Version 2.20.1 des Maven Sunfire-Plugins alle Warnungen in eine Dumpstream-Datei geschrieben werden. z.B/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
oder-q
wirdmvn
weniger ausführlich machen.