Quero impedir que o maven exiba mensagens INFO, quero ver apenas AVISOS e ERROS (se houver).
Como conseguir isso, de preferência alterando a linha de comando que chama de maven?
Quero impedir que o maven exiba mensagens INFO, quero ver apenas AVISOS e ERROS (se houver).
Como conseguir isso, de preferência alterando a linha de comando que chama de maven?
Respostas:
Fiz uma pequena investigação porque também estou interessado na solução.
De acordo com http://books.sonatype.com/mvnref-book/reference/running-sect-options.html#running-sect-verbose-option
Atualmente o maven 3.1.x usa o SLF4J para fazer logon no System.out. Você pode modificar as configurações de log no arquivo:
${MAVEN_HOME}/conf/logging/simplelogger.properties
De acordo com a página: http://maven.apache.org/maven-logging.html
Eu acho que você deve ser capaz de configurar o nível de log padrão do logger simples por meio de um parâmetro de linha de comando, assim:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Mas não consegui fazê-lo funcionar . Eu acho que o único problema é que o maven pega o nível padrão no arquivo de configuração no caminho de classe. Também tentei algumas outras configurações via System.properties, mas todas elas não tiveram êxito.
Você pode encontrar a fonte do slf4j no github aqui: slf4j github
A fonte do simplelogger aqui: slf4j / jcl-over-slf4j / src / main / java / org / apache / commons / log / impl / SimpleLog.java
O carregador de plexo carrega o simplelogger.properties
.
simplelogger.properties
mudança funcionasse? Quando altero a org.slf4j.simpleLogger.warnLevelString
configuração, mvn compile
atualizo-a adequadamente, mas parece estar ignorando a org.slf4j.simpleLogger.defaultLogLevel
configuração. Ele também registra no nível de informações, mesmo quando eu defino isso como aviso ou erro.
mvn validate clean install | egrep -v "(^\[INFO\])"
ou
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
suportes regex e outras opções que podem torná-lo mais sucinta - ss64.com/nt/findstr.html
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[WARN\]"
Você pode conseguir isso com MAVEN_OPTS, por exemplo
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
Em vez de colocar a propriedade do sistema diretamente na linha de comando. (Pelo menos para o maven 3.3.1.)
Considere usar a opção ~/.mavenrc
para definir MAVEN_OPTS
se você deseja alterar o registro para o seu login em todas as chamadas invocadas.
help:evaluate
alvo para imprimir o valor de project.version
e essa saída (embora não pareça ocorrer slf4j
) também foi desativada.
Se você estiver usando o Logback, basta colocar este logback-test.xml
arquivo no src/test/resources
diretório:
<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>
você pode conseguir isso usando abaixo na própria linha de comando
-e for error
-X for debug
-q for only error
por exemplo :
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]
Infelizmente, mesmo com o maven 3, a única maneira de fazer isso é corrigir o código-fonte.
Aqui está uma breve instrução de como fazer isso.
Clone ou fork do repositório do Maven 3: "git clone https://github.com/apache/maven-3.git "
Edite o registro org.apache.maven.cli.MavenCli # e altere
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
para
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
Na versão atual do instantâneo, está na linha 270
Em seguida, basta executar "mvn install", sua nova distribuição maven estará localizada na pasta "apache-maven \ target \"
Veja este diff para a referência: https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131
getLog()
- se você puder viver com a configurabilidade.
A maneira mais simples é atualizar para o Maven 3.3.1 ou superior para aproveitar o ${maven.projectBasedir}/.mvn/jvm.config
suporte.
Em seguida, você pode usar qualquer opção do suporte ao SimpleLogger do SL4FJ do Maven para configurar todos os registradores ou registradores específicos. Por exemplo, aqui está um exemplo de como fazer todos os avisos no warn
nível, exceto um PMD que está configurado para registrar em error
:
cat .mvn/jvm.config
-Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dorg.slf4j.simpleLogger.log.net.sourceforge.pmd=error
Veja aqui para mais detalhes sobre o registro no Maven.
Notei que ao usar a versão 2.20.1 do plug-in maven sunfire , todos os avisos são gravados em um arquivo dumpstream. por exemplo/myproject/target/surefire-reports/2017-11-11T23-02-19_850.dumpstream
-B, --batch-mode
ou-q
tornarámvn
menos detalhado.