Kann Maven weniger ausführlich gemacht werden?


104

Maven spuckt viel zu viele Ausgabezeilen nach meinem Geschmack aus (ich mag die Unix-Methode: Keine Nachrichten sind gute Nachrichten).

Ich möchte alle [INFO] -Zeilen entfernen, konnte jedoch keine Erwähnung eines Arguments oder einer Konfigurationseinstellung finden, die die Ausführlichkeit von Maven steuert.

Gibt es keine LOG4J-ähnliche Möglichkeit, die Protokollstufe festzulegen?


2
Mit Maven 3.6.1 (April 2019, 10+ Jahre später) mvn --no-transfer-progress ...(oder mvn -ntpfür Shorts) sollte eine adäquate Lösung sein. Siehe meine Antwort unten .
VonC

Antworten:


131

Sie können den Schalter -q ausprobieren .

-q, - leise Leise Ausgabe - zeigt nur Fehler an


2
@sheki: Zur Verdeutlichung deaktiviert diese Option keine Logger-Debug-Meldungen. Sie müssen diese über Ihre Logger-Einstellungen deaktivieren. Wenn Sie beispielsweise logback verwenden und eine src / test / resources / logback-test.xml-Datei in Ihr Projekt aufnehmen, können Sie Ihre Protokollierungsstufe während der Testphase auf "Aus" anpassen. Dies wird alles aufräumen.
Codeturner

10
Mein Problem ist, dass -qdas zu leise ist. Ich führe maven unter CI aus und möchte sehen, welche Schritte erforderlich sind (um den Fortschritt zu verfolgen), aber die Download-Anzeigen beeinträchtigen die Nicht-ANSI-Anzeige. Gibt es eine Möglichkeit, nur die Download-Fortschrittsanzeigen auszuschalten?
Guss

6
@Guss: Wenn Sie nur möchten, dass die herunterladenden / heruntergeladenen Nachrichten gelöscht werden -B, aktivieren Sie den Batch-Modus (das sollten Sie sowieso in Ihrem CI-System haben!) Und stellen Sie dann MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"die Fortschrittsinformationen für die Downloads ein.
Ankon

1
In Maven 3.5.x muss ich tatsächlich --batch-mode( -B) aktivieren, damit der -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warnTrick funktioniert.
Auke

Wenn Sie dazu neigen, habe ich einen Lösungsvorschlag eingereicht, der mit Problemen im interaktiven Modus kompatibel ist.apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray

27

-q wie oben gesagt ist was du brauchst. Eine Alternative könnte sein

-B , --Batch-Modus Im nicht interaktiven (Batch-) Modus ausführen Der Batch-Modus ist wichtig, wenn Sie Maven in einer nicht interaktiven, kontinuierlichen Integrationsumgebung ausführen müssen. Im nicht interaktiven Modus hört Maven nie auf, Eingaben des Benutzers zu akzeptieren. Stattdessen werden sinnvolle Standardwerte verwendet, wenn Eingaben erforderlich sind.

Und reduziert auch die Ausgabenachrichten mehr oder weniger auf das Wesentliche.


Es wird für den nicht interaktiven Modus verwendet, der bei der Automatisierung von Läufen
Stanislav

22

Mein Problem ist, dass -q zu leise ist. Ich laufe Maven unter CI

Mit Maven 3.6.1 (April 2019) haben Sie jetzt die Möglichkeit, den Übertragungsfortschritt beim Herunterladen / Hochladen im interaktiven Modus zu unterdrücken .

mvn --no-transfer-progress ....

oder kurz:

mvn -ntp ... ....

Das schlug Ray in den Kommentaren zu MNG-6605 und PR 239 vor .


Diese Lösung unterdrückt sowohl Upload-Nachrichten als auch Downloads, was in einer deployAufgabe normalerweise nicht erwünscht ist
Hilikus


6

Verwenden Sie die Befehlszeilenoptionen -q oder --quiet


2

Wenn Sie nur die [INFO]Nachrichten loswerden möchten, können Sie auch Folgendes tun:

mvn ... | fgrep -v "[INFO]"

Zur Unterdrückung alle Ausgänge (außer Fehler) Sie umleiten könnte stdoutzu /dev/nullmit:

mvn ... 1>/dev/null

(Dies funktioniert nur, wenn Sie bash(oder ähnliche Shells) zum Ausführen der Maven-Befehle verwenden.)


0

Maven 3.1.x verwendet SLF4j für die Protokollierung. Anweisungen zur Konfiguration finden Sie unter https://maven.apache.org/maven-logging.html

Kurz gesagt: Ändern ${MAVEN_HOME}/conf/logging/simplelogger.propertiesoder setzen Sie dieselben Eigenschaften über die MAVEN_OPTSUmgebungsvariable.

Beispiel: Einstellung MAVEN_OPTSzum -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnKonfigurieren der Protokollierung des Übertragungslisteners für den Stapelmodus und Festlegen -Dorg.slf4j.simpleLogger.defaultLogLevel=warnder Standardprotokollstufe.


0

Die vorhandene Antwort hilft Ihnen beim Filtern basierend auf der Protokollebene mit --quiet. Ich fand, dass viele INFO-Nachrichten zum Debuggen nützlich sind, jedoch waren das Herunterladen von Artefaktprotokollnachrichten wie die folgenden verrauscht und nicht hilfreich.

Downloading: http://nexus:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata.xml

Ich habe diese Lösung gefunden:

https://blogs.itemis.com/de/in-a-nutshell-removing-artifact-messages-from-maven-log-output

mvn clean install -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.