sor*_*rin 133 logging maven-2 maven
我想阻止maven显示INFO消息,我想只看到警告和错误(如果有的话).
我怎样才能实现这一点,最好是通过更改调用maven的命令行来实现?
kis*_*isp 89
我做了一个小调查,因为我也对解决方案感兴趣.
目前,maven 3.1.x使用SLF4J登录System.out.您可以修改文件中的日志记录设置:
${MAVEN_HOME}/conf/logging/simplelogger.properties
Run Code Online (Sandbox Code Playgroud)
根据页面:http://maven.apache.org/maven-logging.html
我认为您应该能够通过命令行参数设置简单记录器的默认日志级别,如下所示:
$ mvn clean package -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用.我想这是唯一的问题,maven从类路径上的配置文件中获取默认级别.我还通过System.properties尝试了其他几个设置,但所有设置都不成功.
你可以在github上找到slf4j的源代码:slf4j github
这里是simplelogger的源码:slf4j/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SimpleLog.java
丛加载器加载simplelogger.properties.
Tom*_*m H 43
mvn validate clean install | egrep -v "(^\[INFO\])"
Run Code Online (Sandbox Code Playgroud)
要么
mvn validate clean install | egrep -v "(^\[INFO\]|^\[DEBUG\])"
Run Code Online (Sandbox Code Playgroud)
mvn validate clean install | findstr /V /R "^\[INFO\] ^\[DEBUG\]"
Run Code Online (Sandbox Code Playgroud)
bin*_*ley 30
例如,您可以使用MAVEN_OPTS实现此目的
MAVEN_OPTS=-Dorg.slf4j.simpleLogger.defaultLogLevel=warn mvn clean
而不是将系统属性直接放在命令行上.(至少对于maven 3.3.1.)
如果您希望在所有maven调用中为登录更改日志记录,请考虑使用~/.mavenrc进行设置MAVEN_OPTS.
小智 17
如果您使用的是Logback,只需将此logback-test.xml文件放入src/test/resources目录:
<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>
Run Code Online (Sandbox Code Playgroud)
小智 10
您可以通过在命令行本身中使用以下内容来实现此目的
-e for error
-X for debug
-q for only errorRun Code Online (Sandbox Code Playgroud)
例如:
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]Run Code Online (Sandbox Code Playgroud)
小智 5
不幸的是,即使使用maven 3,唯一的方法就是修补源代码.
这是如何做到这一点的简短说明.
克隆或分叉Maven 3 repo:"git clone https://github.com/apache/maven-3.git "
编辑org.apache.maven.cli.MavenCli #logging,并进行更改
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_INFO );
Run Code Online (Sandbox Code Playgroud)
至
cliRequest.request.setLoggingLevel( MavenExecutionRequest.LOGGING_LEVEL_WARN );
Run Code Online (Sandbox Code Playgroud)
在当前的快照版本中,它位于第270行
然后只需运行"mvn install",你的新maven发行版将位于"apache-maven\target \"文件夹中
请参阅此差异以供参考:https://github.com/ushkinaz/maven-3/commit/cc079aa75ca8c82658c7ff53f18c6caaa32d2131