Maven 根据我的喜好喷出了太多的输出行(我喜欢 Unix 的方式:没有消息就是好消息)。
我想摆脱所有[INFO]
行,但我找不到任何关于控制 Maven 详细程度的参数或配置设置的提及。
是否没有类似 LOG4J 的方式来设置日志级别?
你可以试试-q
开关。
-q
,--quiet
安静的输出 - 只显示错误
-q
如上所述是你所需要的。一种替代方法可能是:
-B
,--batch-mode
在非交互(批处理)模式下运行 如果需要在非交互、持续集成环境中运行 Maven,批处理模式是必不可少的。在非交互模式下运行时,Maven 将永远不会停止接受用户的输入。相反,它会在需要输入时使用合理的默认值。
并且还将或多或少地减少输出消息的本质。
我的问题是 -q 太安静了。我在 CI 下运行 maven
使用Maven 3.6.1(2019 年 4 月),您现在可以选择在交互模式下下载/上传时抑制传输进度。
mvn --no-transfer-progress ....
或简而言之:
mvn -ntp ... ....
官方链接: https ://maven.apache.org/maven-logging.html
您可以添加JVM参数:
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN
小心大写。
使用 -q 或 --quiet 命令行选项
如果您只想摆脱[INFO]
消息,您也可以这样做:
mvn ... | fgrep -v "[INFO]"
要抑制所有输出(错误除外),您可以重定向stdout
到/dev/null
:
mvn ... 1>/dev/null
(这仅在您使用bash
(或类似的 shell)运行 Maven 命令时才有效。)
Maven 3.1.x 使用 SLF4j 进行日志记录,您可以在https://maven.apache.org/maven-logging.html找到如何配置它的说明
简而言之:要么修改,要么通过环境变量${MAVEN_HOME}/conf/logging/simplelogger.properties
设置相同的属性。MAVEN_OPTS
例如:setting MAVEN_OPTS
to-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
配置批处理模式传输监听器的日志记录,并-Dorg.slf4j.simpleLogger.defaultLogLevel=warn
设置默认的日志级别。
现有答案可帮助您使用--quiet
. 我发现许多 INFO 消息对调试很有用,但是像下面这样的下载工件日志消息很吵而且没有帮助。
Downloading: http://nexus:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata.xml
我找到了这个解决方案:
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