Quiero evitar que Maven muestre mensajes INFO, quiero ver solo ADVERTENCIAS y ERRORES (si los hay).
¿Cómo puedo lograr esto, preferiblemente cambiando la línea de comando que llama a maven?
Hice una pequeña investigación porque también estoy interesado en la solución.
De acuerdo con http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
Actualmente, Maven 3.1.x utiliza SLF4J para iniciar sesión en System.out. Puede modificar la configuración de registro en el archivo:
${MAVEN_HOME}/conf/logging/simplelogger.properties
De acuerdo con la página: http://maven.apache.org/maven-logging.html
Creo que debería poder configurar el nivel de registro predeterminado del registrador simple a través de un parámetro de línea de comando, como este:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Pero no pude hacerlo funcionar . Supongo que el único problema con esto es que Maven recoge el nivel predeterminado del archivo de configuración en el classpath. También probé algunas otras configuraciones a través de System.properties, pero todas no tuvieron éxito.
Puede encontrar la fuente de slf4j en github aquí: slf4j github
La fuente del simplelogger aquí: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / logging / impl / SimpleLog.java
El cargador de plexo carga el simplelogger.properties
.
simplelogger.properties
cambio? Cuando cambio la org.slf4j.simpleLogger.warnLevelString
configuración, se mvn compile
actualiza de manera adecuada, pero parece estar ignorando la org.slf4j.simpleLogger.defaultLogLevel
configuración. También se registra en el nivel de información, incluso cuando configuro eso para advertir o error.
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\]"
findstr
admite expresiones regulares y otras opciones que podrían hacerlo más conciso
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Puede lograr esto con MAVEN_OPTS, por ejemplo
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
En lugar de poner la propiedad del sistema directamente en la línea de comando. (Al menos para maven 3.3.1.)
Considere usar ~/.mavenrc
para configurar MAVEN_OPTS
si desea cambiar el registro para su inicio de sesión en todas las invocaciones de Maven.
help:evaluate
objetivo para imprimir el valor de project.version
y esta salida (aunque no parece llegar slf4j
) también se apagó.
Si está utilizando Logback, simplemente coloque este logback-test.xml
archivo en el src/test/resources
directorio:
<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>
puede lograr esto usando a continuación en la línea de comandos en sí
-e for error
-X for debug
-q for only error
p.ej :
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]
Desafortunadamente, incluso con Maven 3, la única forma de hacerlo es parchear el código fuente.
Aquí hay instrucciones breves sobre cómo hacerlo.
Clon o tenedor Maven 3 repo: "git clone https://github.com/apache/maven-3.git "
Edite el registro de org.apache.maven.cli.MavenCli # y cambie
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
a
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
En la versión actual de la instantánea, está en la línea 270
Luego, simplemente ejecute "mvn install", su nueva distribución de maven se ubicará en la carpeta "apache-maven \ target \"
Vea este diff para la referencia: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
, si puede vivir con la capacidad de configuración.
La forma más sencilla es actualizar a Maven 3.3.1 o superior para aprovechar el ${maven.projectBasedir}/.mvn/jvm.config
soporte.
Luego puede usar cualquier opción del soporte SimpleLogger de Maven's SL4FJ para configurar todos los registradores o registradores particulares. Por ejemplo, aquí hay una forma de hacer todas las advertencias a warn
nivel, excepto un PMD que está configurado para iniciar sesión en error
:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Consulte aquí para obtener más detalles sobre cómo iniciar sesión con Maven.
Cambiar el archivo info
a error
en simplelogging.properties
le ayudará a cumplir sus requisitos.
Simplemente cambie el valor de la línea de abajo
org.slf4j.simpleLogger.defaultLogLevel=info
a
org.slf4j.simpleLogger.defaultLogLevel=error
He notado que cuando uso la versión 2.20.1 del complemento maven sunfire , todas las advertencias se escriben en un archivo dumpstream. p.ej/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
Vaya a simplelogger.properties
in ${MAVEN_HOME}/conf/logging/
y configure las siguientes propiedades:
org.slf4j.simpleLogger.defaultLogLevel=warn
org.slf4j.simpleLogger.log.Sisu=warn
org.slf4j.simpleLogger.warnLevelString=warn
warn
nowarning
-B, --batch-mode
o-q
harámvn
menos detallado.