【问题标题】:disable maven download progress indication禁用 Maven 下载进度指示
【发布时间】:2014-03-05 12:16:03
【问题描述】:

在我们公司的 CI 机器中,maven 本地存储库在每次构建之前都会被清除。结果我的构建日志总是有一堆这样的噪音

Downloading: http://.../artifactory/repo/com/codahale/metrics/metrics-core/3.0.1/metrics-core-3.0.1.jar
4/2122 KB   
8/2122 KB   
12/2122 KB   
16/2122 KB   
18/2122 KB   
18/2122 KB   4/480 KB   
18/2122 KB   8/480 KB   
18/2122 KB   12/480 KB   
18/2122 KB   16/480 KB   
18/2122 KB   16/480 KB   4/1181 KB   
18/2122 KB   16/480 KB   8/1181 KB   
18/2122 KB   16/480 KB   12/1181 KB

是否有一个选项可以禁用下载进度指示?

【问题讨论】:

    标签: maven


    【解决方案1】:

    mvn -B ..mvn --batch-mode ... 可以解决问题。

    更新

    【讨论】:

    • 谢谢你,做到了,我也可以摆脱下载/下载的行吗?
    • 您可以尝试mvn -q,但您也不会看到其他消息。也许你可以看看here
    • mvn --batch-mode ... | grep -v 'Download.* http://' 是我有时用来摆脱下载*消息的方法。
    • @Barett 您提供的链接只是发布插件的文档。它根本没有提到--batch-mode 如何影响输出。
    • 问题是专门询问关于抑制下载噪音的问题,这对于 maven 来说非常冗长。我的观点是您的解决方案有一个意想不到的副作用:它还会禁用部署插件中的上传日志,因此例如您无法看到您真正将工件部署到哪个仓库
    【解决方案2】:

    首先,正如khmarbaise 已经回答的那样,您应该使用mvn -B 来启用批处理模式。

    如果您还想摆脱“正在下载/已下载”行,您可以将相应的记录器org.apache.maven.cli.transfer.Slf4jMavenTransferListener 设置为高于信息的级别。因此,我使用了org.slf4j.simpleLogger.log 属性作为记录的here

    仅使用命令行,您可以这样做:

    mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B ...
    

    或者您可以使用MAVEN_OPTS 环境变量,如here 所述:

    export MAVEN_OPTS=-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
    

    注意:据我所知,这仅适用于 maven 3.1 及更高版本。

    【讨论】:

    • 这很棒。也可以将org.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn 添加到$MAVEN_HOME/conf/logging/simplelogging.properties,使其永久化。
    • 此解决方案禁止上传消息和下载,这在deploy 任务中通常是不需要的
    • 它将级别设置为 WARN,因此您仍然可以知道是否有问题。但我同意有一个单独的设置会很好。
    【解决方案3】:

    从 Maven 3.6.1 开始,Maven 现在可以选择在交互模式下下载/上传时抑制传输进度。

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

    或者简而言之:

    mvn -ntp ... ....

    完整的发行说明可以在这里找到:http://maven.apache.org/docs/3.6.1/release-notes.html

    【讨论】:

      【解决方案4】:

      快速回答,使用 maven 批处理模式,将以下内容添加到您的 maven 命令中:

      -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
      

      例如:

      mvn deploy -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
      

      【讨论】:

        【解决方案5】:

        与上面的答案相同,但您不需要每次都向命令行添加选项。只需将这些行添加到文件${maven.projectBasedir}/.mvn/maven.config

        --no-transfer-progress
        

        然后您可以照原样使用mvn

        mvn test
        mvn deploy
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-27
          • 2021-02-17
          • 2010-11-27
          • 2011-12-06
          • 1970-01-01
          • 2012-04-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多