题
Maven 根据我的口味输出了太多行输出(我喜欢 Unix 方式:没有消息就是好消息)。
我想删除所有 [INFO] 行,但我找不到任何提及控制 Maven 详细程度的参数或配置设置。
有没有类似LOG4J的方法来设置日志级别?
解决方案
您可以尝试 -q 转变。
-q,--quiet 安静输出 - 只显示错误
其他提示
-q 如上所述,这就是您所需要的。另一种选择可能是
-B, - 批处理模式如果您需要在非交互式,连续的集成环境中运行Maven,则在非交互(批处理)模式批处理模式下运行至关重要。当以非交互模式运行时,Maven将永远不会停止接受用户的输入。相反,当需要输入时,它将使用合理的默认值。
并且还将输出消息或多或少地减少到必需品。
使用 -q 或 --quiet 命令行选项
官方链接:https://maven.apache.org/maven-logging.html
您可以添加在 虚拟机 参数 :
-Dorg.slf4j.simpleLogger.defaultLogLevel=WARN
当心大写。
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.cli.transfer.Slf4jMavenTransferListener=warn
配置批处理模式传输侦听器的日志记录,以及 -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 ... ....