Maven può essere reso meno prolisso?


104

Maven emette troppe righe di output secondo i miei gusti (mi piace il modo Unix: nessuna notizia è una buona notizia).

Vorrei eliminare tutte le righe [INFO], ma non sono riuscito a trovare alcuna menzione di un argomento o di impostazioni di configurazione che controllano la verbosità di Maven.

Non esiste un modo simile a LOG4J per impostare il livello di registro?


2
Con Maven 3.6.1 (aprile 2019, 10+ anni dopo), mvn --no-transfer-progress ...(o mvn -ntpper i cortometraggi) dovrebbe essere una soluzione adeguata. Vedi la mia risposta di seguito .
VonC

Risposte:


132

Puoi provare l' opzione -q .

-q, - quiet Silenzioso output - mostra solo gli errori


2
@sheki: per chiarire, questa opzione non disabilita i messaggi di debug del logger: devi disattivarla tramite le impostazioni del logger. Ad esempio, se stai usando logback, includere un file src / test / resources / logback-test.xml nel tuo progetto ti permetterà di personalizzare il tuo livello di registrazione su "off" durante la fase di test. Questo pulirà tutto.
codeturner

10
Il mio problema è che -qè troppo silenzioso. Sto eseguendo Maven con CI e voglio vedere i passaggi necessari (per monitorare i progressi), ma gli indicatori di download stanno facendo confusione sul display non ANSI. C'è un modo per disattivare solo gli indicatori di avanzamento del download?
Guss

6
@Guss: Se vuoi solo che i messaggi in download / download scompaiano, usa -Bper abilitare la modalità batch (dovresti averla comunque nel tuo sistema CI!), Quindi impostare MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"per terminare le informazioni di avanzamento per i download.
ankon

1
In Maven 3.5.x ho effettivamente bisogno di enable --batch-mode( -B) affinché il -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warntrucco funzioni.
Auke

se sei propenso ho presentato una proposta di soluzione compatibile con i problemi della modalità interattiva. apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray

27

-q come detto sopra è quello che ti serve. Un'alternativa potrebbe essere

-B , --batch-mode Esegui in modalità non interattiva (batch) La modalità batch è essenziale se è necessario eseguire Maven in un ambiente di integrazione continua non interattivo. Quando viene eseguito in modalità non interattiva, Maven non smetterà mai di accettare l'input dell'utente. Invece, utilizzerà valori predefiniti ragionevoli quando richiede input.

E ridurrà anche i messaggi di output più o meno all'essenziale.


viene utilizzato per la modalità non interattiva, che aiuta quando si automatizzano le corse
Stanislav

22

Il mio problema è che -q è troppo silenzioso. Sto correndo con Maven sotto CI

Con Maven 3.6.1 (aprile 2019) , ora hai un'opzione per sopprimere l'avanzamento del trasferimento durante il download / caricamento in modalità interattiva .

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

o in breve:

mvn -ntp ... ....

Questo è ciò che Ray ha proposto nei commenti con MNG-6605 e PR 239 .


Questa soluzione sopprime i messaggi di caricamento così come i download, che di solito non è desiderato in deployun'attività
Hilikus


6

Utilizzare le opzioni della riga di comando -q o --quiet


2

Se vuoi solo sbarazzarti dei [INFO]messaggi, potresti anche fare:

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

Per eliminare tutte le uscite (tranne gli errori) si potrebbe reindirizzare stdouta /dev/nullcon:

mvn ... 1>/dev/null

(Funziona solo se usi bash(o shell simili) per eseguire i comandi Maven.)


0

Maven 3.1.x utilizza SLF4j per la registrazione, puoi trovare istruzioni su come configurarlo su https://maven.apache.org/maven-logging.html

In breve: modificare ${MAVEN_HOME}/conf/logging/simplelogger.propertieso impostare le stesse proprietà tramite la MAVEN_OPTSvariabile di ambiente.

Ad esempio: l'impostazione MAVEN_OPTSper -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnconfigurare la registrazione del listener di trasferimento in modalità batch e -Dorg.slf4j.simpleLogger.defaultLogLevel=warnimpostare il livello di registrazione predefinito.


0

La risposta esistente ti aiuta a filtrare in base al livello di log utilizzando --quiet. Ho scoperto che molti messaggi INFO sono utili per il debug, tuttavia i messaggi di registro degli artefatti di download come i seguenti erano rumorosi e non utili.

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

Ho trovato questa soluzione:

https://blogs.itemis.com/en/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.