可以使Maven不再那么冗长吗?


104

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

我想摆脱所有[INFO]行,但是找不到控制Maven冗长性的参数或配置设置。

是否没有类似LOG4J的方式来设置日志级别?


2
使用Maven 3.6.1(2019年4月,超过10年后),mvn --no-transfer-progress ...(或简称mvn -ntp为短裤)应该是一个适当的解决方案。请参阅下面的答案
VonC

Answers:


132

您可以尝试-q开关。

-q,-quiet安静的输出-仅显示错误


2
@sheki:为澄清起见,此选项不会禁用记录器调试消息-您需要通过记录器设置将其关闭。例如,如果您使用的是logback,则在项目中包含src / test / resources / logback-test.xml文件将使您可以在测试阶段将日志记录级别自定义为“关闭”。这将清理所有内容。
codeturner 2013年

10
我的问题是-q太安静了。我正在CI下运行Maven,我想查看它所采取的步骤(以跟踪进度),但是下载指示器使非ANSI显示混乱。有没有办法只关闭下载进度指示器?
格斯

6
@Guss:如果只希望取消“下载/已下载”消息,请使用-B启用批处理模式(无论如何,您都应在CI系统中使用该模式!),然后设置MAVEN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"为取消下载进度信息。
ankon

1
在maven 3.5.x中,我实际上需要启用--batch-mode-B-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn才能起作用。
奥克

如果你倾向于我已经提交了一个建议的解决方案与互动模式兼容issues.apache.org/jira/browse/MNG-6605github.com/apache/maven/pull/239

27

如上所述,-q是您所需要的。另一种可能是

-B,-- batch-mode 在非交互式(批处理)模式下运行如果需要在非交互式连续集成环境中运行Maven,则批处理模式至关重要。在非交互模式下运行时,Maven将永不停止接受来自用户的输入。相反,当需要输入时,它将使用合理的默认值。

并且还将或多或少地减少输出消息的要领。


它用于非交互模式,这有助于自动化运行
Stanislav '18

22

我的问题是-q太安静了。我在CI下运行Maven

使用Maven 3.6.1(2019年4月),您现在可以选择以交互方式下载/上传时抑制传输进度

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

或简而言之:

mvn -ntp ... ....

这就是提出的意见MNG-6605PR 239


该解决方案可以抑制上传消息和下载消息,这在deploy任务中通常是不需要的
Hilikus



2

如果您只想摆脱[INFO]消息,那么您也可以这样做:

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

要取消显示所有输出(错误除外),可以使用以下命令重定向stdout/dev/null

mvn ... 1>/dev/null

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


0

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器的日志记录,并设置默认日志级别。


0

现有答案可帮助您使用进行基于日志级别的过滤--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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.