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?
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?
Respuestas:
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.propertiescambio? Cuando cambio la org.slf4j.simpleLogger.warnLevelStringconfiguración, se mvn compileactualiza de manera adecuada, pero parece estar ignorando la org.slf4j.simpleLogger.defaultLogLevelconfiguració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\]"
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 ~/.mavenrcpara configurar MAVEN_OPTSsi desea cambiar el registro para su inicio de sesión en todas las invocaciones de Maven.
help:evaluateobjetivo para imprimir el valor de project.versiony esta salida (aunque no parece llegar slf4j) también se apagó.
Si está utilizando Logback, simplemente coloque este logback-test.xmlarchivo en el src/test/resourcesdirectorio:
<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.configsoporte.
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 warnnivel, 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.
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
-B, --batch-modeo-qharámvnmenos detallado.