能让 Maven 少说点废话吗?

Maven 根据我的口味提供了太多的输出行(我喜欢 Unix 的方式: 没有新闻就是好消息)。

我想去掉所有的 [INFO]代码行,但是我找不到任何控制 Maven 冗长程度的参数或配置设置。

有没有类似 LOG4J 的方法来设置日志级别?

59763 次浏览

你可以试试 -q开关

静音输出-只显示错误

使用-q 或—— static 命令行选项

如上所述,-q正是您所需要的。另一种选择可以是:

-B--batch-mode 以非交互(批处理)模式运行 如果您需要在一个非交互的、持续的集成环境中运行 Maven,那么批处理模式是必不可少的。当在非交互模式下运行时,Maven 将永远不会停下来接受来自用户的输入。相反,当它需要输入时,它将使用合理的默认值。

并且还将或多或少地将输出消息减少到本质上。

Maven 3.1.x 使用 SLF4j 进行日志记录,您可以在 https://maven.apache.org/maven-logging.html中找到如何配置它的说明

简而言之: 要么修改 ${MAVEN_HOME}/conf/logging/simplelogger.properties,要么通过 MAVEN_OPTS环境变量设置相同的属性。

例如: 将 MAVEN_OPTS设置为 -Dorg.slf4j.simpleLogger.log.org.apache.maven.cl‌​i.transfer.Slf4jMave‌​nTransferListener=wa‌​rn配置批处理模式传输侦听器的日志记录,而 -Dorg.slf4j.simpleLogger.defaultLogLevel=warn设置默认的日志级别。

官方链接: Https://maven.apache.org/maven-logging.html

您可以添加 JVM参数:

-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN

小心大写字母。

如果你只想摆脱 [INFO]信息,你也可以这样做:

mvn ... | fgrep -v "[INFO]"

为了抑制 所有输出(错误除外) ,您可以使用以下方法将 stdout重定向到 /dev/null:

mvn ... 1>/dev/null

(这只有在使用 bash(或类似的 shell)运行 Maven 命令时才有效。)

现有的答案帮助您使用 --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

我的问题是-q 太安静了,我现在在 CI 管理 Maven

有了 Maven 3.6.1(2019年4月),就有了 选项以交互模式下载/上载时禁止传输进度

mvn --no-transfer-progress ....

简而言之:

mvn -ntp ... ....

这就是 MNG-6605PR 239提出的 在评论中