Voglio impedire a maven di visualizzare i messaggi INFO, voglio vedere solo AVVERTENZE ed ERRORI (se presenti).
Come posso ottenere questo, preferibilmente cambiando la riga di comando che chiama Maven?
Voglio impedire a maven di visualizzare i messaggi INFO, voglio vedere solo AVVERTENZE ed ERRORI (se presenti).
Come posso ottenere questo, preferibilmente cambiando la riga di comando che chiama Maven?
Risposte:
Ho fatto una piccola indagine perché sono anche interessato alla soluzione.
Attualmente maven 3.1.x utilizza SLF4J per accedere a System.out. È possibile modificare le impostazioni di registrazione nel file:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Secondo la pagina: http://maven.apache.org/maven-logging.html
Penso che dovresti essere in grado di impostare il livello di log predefinito del logger semplice tramite un parametro della riga di comando, come questo:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Ma non sono riuscito a farlo funzionare . Immagino che l'unico problema sia che Maven raccoglie il livello predefinito dal file di configurazione sul percorso di classe. Ho anche provato un paio di altre impostazioni tramite System.properties, ma tutte non hanno avuto successo.
Puoi trovare la fonte di slf4j su github qui: slf4j github
La fonte del semplicelogger qui: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
Il caricatore di plesso carica il simplelogger.properties.
simplelogger.propertiesfunzionare il resto? Quando modifico le org.slf4j.simpleLogger.warnLevelStringimpostazioni in modo mvn compileappropriato, ma sembra ignorare l' org.slf4j.simpleLogger.defaultLogLevelimpostazione. Registra anche a livello di informazioni, anche quando lo imposto per avvisare o errore.
mvn validate clean install | egrep -v "(^\[INFO\])"
o
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\]"
findstrsupporti regex e altre opzioni che potrebbero renderlo più sintetico - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Puoi farlo con MAVEN_OPTS, ad esempio
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Invece di mettere la proprietà di sistema direttamente sulla riga di comando. (Almeno per Maven 3.3.1.)
Prendi in considerazione l'utilizzo ~/.mavenrcper l'impostazione MAVEN_OPTSse desideri che la registrazione venga modificata per il tuo accesso in tutte le chiamate invocate.
help:evaluatetarget per stampare il valore di project.versione anche questo output (anche se non sembra arrivare slf4j) è stato disattivato.
Se si utilizza Logback, basta inserire questo logback-test.xmlfile nella src/test/resourcesdirectory:
<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>
è possibile ottenere ciò utilizzando di seguito nella riga di comando stessa
-e for error
-X for debug
-q for only error
per esempio :
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]
Sfortunatamente, anche con Maven 3 l'unico modo per farlo è patchare il codice sorgente.
Ecco alcune brevi istruzioni su come farlo.
Clone o fork repository Maven 3: "git clone https://github.com/apache/maven-3.git "
Modifica la registrazione org.apache.maven.cli.MavenCli # e modifica
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
per
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
Nella versione attuale dell'istantanea è alla linea 270
Quindi esegui "mvn install", la nuova distribuzione di Maven si troverà nella cartella "apache-maven \ target \"
Vedi questo diff per il riferimento: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()- se riesci a convivere con la configurabilità.
Il modo più semplice è eseguire l'aggiornamento a Maven 3.3.1 o versioni successive per usufruire del ${maven.projectBasedir}/.mvn/jvm.configsupporto.
Quindi è possibile utilizzare qualsiasi opzione dal supporto SimpleLogger di Maven SL4FJ per configurare tutti i logger o logger particolari. Ad esempio, ecco un modo per inviare tutti gli avvisi a warnlivello, ad eccezione di un PMD configurato per accedere a error:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Vedi qui per maggiori dettagli sulla registrazione con Maven.
Ho notato che quando si utilizza la versione 2.20.1 del plug-in Maven Sunfire , tutti gli avvisi vengono scritti in un file dumpstream. per esempio/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-modeo-qrenderàmvnmeno prolisso.