¿Se puede hacer que Maven sea menos detallado?

104

Maven arroja demasiadas líneas de salida para mi gusto (me gusta la forma Unix: no hay noticias son buenas noticias).

Quiero deshacerme de todas las líneas [INFO], pero no pude encontrar ninguna mención de un argumento o configuración de configuración que controle la verbosidad de Maven.

¿No existe una forma similar a LOG4J de establecer el nivel de registro?

Asaf Bartov
fuente
2
Con Maven 3.6.1 (abril de 2019, más de 10 años después), mvn --no-transfer-progress ...(o mvn -ntppara cortos) debería ser una solución adecuada. Vea mi respuesta a continuación .
VonC

Respuestas:

132

Puede probar el modificador -q .

-q, - salida silenciosa silenciosa - solo muestra errores

Jorge Ferreira
fuente
2
@sheki: Para aclarar, esta opción no deshabilita los mensajes de depuración del registrador; debe desactivarlo a través de la configuración de su registrador. Por ejemplo, si está utilizando logback, incluir un archivo src / test / resources / logback-test.xml en su proyecto le permitirá personalizar su nivel de registro en "desactivado" durante la fase de prueba. Esto limpiará todo.
codeturner
10
Mi problema es que -qestá demasiado silencioso. Estoy ejecutando maven bajo CI y quiero ver los pasos que toma (para rastrear el progreso), pero los indicadores de descarga están arruinando la pantalla que no es ANSI. ¿Hay alguna forma de apagar solo los indicadores de progreso de descarga?
Guss
6
@Guss: Si solo desea que los mensajes de descarga / descarga desaparezcan, use -Bpara habilitar el modo por lotes (¡debería tenerlo en su sistema de CI de todos modos!), Y luego configure MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"para eliminar la información de progreso de las descargas.
ankon
1
En maven 3.5.x realmente necesito habilitar --batch-mode( -B) para que el -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warntruco funcione.
Auke
Si usted está inclinado He presentado una propuesta de solución compatible con el modo interactivo issues.apache.org/jira/browse/MNG-6605 , github.com/apache/maven/pull/239
Ray
27

-q como se dijo anteriormente es lo que necesita. Una alternativa podría ser

-B , --batch-mode Ejecutar en modo no interactivo (por lotes) El modo por lotes es esencial si necesita ejecutar Maven en un entorno de integración continua y no interactivo. Cuando se ejecuta en modo no interactivo, Maven nunca se detendrá para aceptar la entrada del usuario. En su lugar, utilizará valores predeterminados sensibles cuando requiera entrada.

Y también reducirá los mensajes de salida más o menos a lo esencial.

Stanislav
fuente
se usa para el modo no interactivo, lo que ayuda al automatizar carreras
Stanislav
22

Mi problema es que -q es demasiado silencioso. Estoy ejecutando maven bajo CI

Con Maven 3.6.1 (abril de 2019) , ahora tiene una opción para suprimir el progreso de la transferencia al descargar / cargar en modo interactivo .

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

o en resumen:

mvn -ntp ... ....

Eso es lo que propuso Ray en los comentarios con MNG-6605 y PR 239 .

VonC
fuente
Esta solución suprime los mensajes de carga y las descargas, lo que generalmente no se desea en una deploytarea
Hilikus
6

Utilice las opciones de línea de comandos -q o --quiet

Sietse
fuente
2

Si solo desea deshacerse de los [INFO]mensajes, también puede hacer:

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

Para suprimir todas las salidas (excepto los errores), puede redirigir stdouta /dev/nullcon:

mvn ... 1>/dev/null

(Esto solo funciona si usa bash(o shells similares) para ejecutar los comandos de Maven).

m13r
fuente
0

Maven 3.1.x usa SLF4j para el registro, puede encontrar instrucciones sobre cómo configurarlo en https://maven.apache.org/maven-logging.html

En resumen: modifique ${MAVEN_HOME}/conf/logging/simplelogger.propertieso establezca las mismas propiedades a través de la MAVEN_OPTSvariable de entorno.

Por ejemplo: establecer MAVEN_OPTSen -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rnconfigura el registro del escucha de transferencia en modo por lotes y -Dorg.slf4j.simpleLogger.defaultLogLevel=warnestablece el nivel de registro predeterminado.

ankon
fuente
0

La respuesta existente lo ayuda a filtrar según el nivel de registro que usa --quiet. Descubrí que muchos mensajes INFO son útiles para la depuración, sin embargo, los mensajes de registro de artefactos de descarga, como los siguientes, eran ruidosos y no eran útiles.

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

Encontré esta solución:

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
errant.info
fuente