有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有可能加速maven工件的下载吗?

不幸的是,由于工件下载,maven初始构建非常缓慢
f、 我试着用curl下载同一个jar,速度快了3倍
为什么?我怎样才能加快速度呢?也许maven有一些与工件下载速度相关的配置键

多谢各位


共 (5) 个答案

  1. # 1 楼答案

    您可以使用curl下载工件(如果您认为更快),并使用以下命令将其安装到maven存储库中:

    mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
        -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
    

    http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

    一旦您在本地存储库中安装了它,下次maven将从那里获取它,并且不再尝试下载

    另外,如果Maven Maven知识库站点速度较慢,请考虑使用Maven存储库镜像。

    镜像设置指南-http://maven.apache.org/guides/mini/guide-mirror-settings.html

  2. # 2 楼答案

    上述答案遗漏了问题的关键点:

    I've tried to download the same jar using curl - it is 3 times faster!!!

    这意味着这是一个软件问题,可以通过安装本地代理或更改设置中的快照策略来缓解。xml都会带来额外的工作和潜在的副作用,例如快照依赖关系没有更新

    问题描述的问题是maven没有利用可用带宽,因此速度较慢。这个问题在https://issues.apache.org/jira/browse/WAGON-537中确定,并在maven 3.6.1之后得到解决,分别参见https://maven.apache.org/docs/3.6.1/release-notes.htmlhttps://issues.apache.org/jira/browse/MNG-6591。因此,除了更新到最新的maven版本之外,不需要做任何其他事情

  3. # 3 楼答案

    使用本地存储库管理器/镜像/代理。所有下载都将与此相反,而不是与互联网上的公共存储库。最受欢迎的是:

    它们很容易安装和设置,并提供了很多价值。它们中的大多数都有免费版本。只要使用一个旧的开发框就可以开始,一旦你想扩大范围并让更多的人可以使用它,就可以转移到一个真正的服务器上

  4. # 4 楼答案

    最好的优化是避免下载。查看一下^{}maven配置,并检查releasessnapshots上的updatePolicy标志是否设置为“daily”。这应该是默认设置,但有时可能会设置为“始终”-例如,在存储库管理器配置中

    警告:在这种情况下(每日),您必须对可能无法立即得到的快照更改保持谨慎

    我知道这不是对你问题的直接回答,而是我所知道的最好的maven下载优化

  5. # 5 楼答案

    我知道这是一个古老的问题,但在这里从谷歌绊倒。我已经有了代理,只是需要加速并发下载。您可以使用mvn选项:

    -Dmaven.artifact.threads=30

    资料来源: https://maven.apache.org/guides/mini/guide-configuring-maven.html

    Configuring Parallel Artifact Resolution
    By default, Maven 2.1.0+ will download up to 5 artifacts (from different groups) at once. To change the size of the thread pool, start Maven using -Dmaven.artifact.threads. For example, to only download single artifacts at a time:
    
    mvn -Dmaven.artifact.threads=1 verify
    You may wish to set this option permanently, in which case you can use the MAVEN_OPTS environment variable. For example:
    
    export MAVEN_OPTS=-Dmaven.artifact.threads=3