【问题标题】:Maven failing to download jar dependenciesMaven 无法下载 jar 依赖项
【发布时间】:2011-08-16 05:43:52
【问题描述】:

我创建了一个非常简单的默认应用程序,用于在我的 Windows 7 机器上测试我的 Eclipse Indigo/Maven v3.0.1 设置。 Hello World 应用在 Eclipse 中运行良好。

现在,我尝试在命令行中使用mvn install 进行测试。

此时我看到 Maven 下载了大量依赖项。出于某种原因,虽然它会在下载一个时卡住,并且会在中途停止。每次都不在同一点,但目前始终是同一个jar文件,例如...

http://repo1.maven.org/maven2/org/apache/maven/surefire/surefire-booter/2.5/surefire-booter-2.5.jar

如果我从浏览器下载此文件,它可以完美运行。事实上相当快。现在,如果我手动将该下载的文件复制到我的 .m2 存储库目录中的相应目录,安装将继续下载依赖项,直到它随机遇到另一个并停止。

这是我的 POM,虽然我不确定它是否会有所帮助,因为它非常基础,而且似乎可以与 mvn compile 一起使用。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.kyeema</groupId>
  <artifactId>QServer</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>QServer</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

这是一些引用一些虚拟 jar 文件的调试输出?

[INFO] Surefire report directory: C:\workspace\QServer\target\surefire-reports
[DEBUG] Setting system property [user.dir]=[C:\workspace\QServer]
[DEBUG] Setting system property [localRepository]=[C:\Users\Andre\.m2\repository]
[DEBUG] Setting system property [basedir]=[C:\workspace\QServer]
[DEBUG] Using JVM: C:\Program Files\Java\jdk1.7.0\jre\bin\java
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.2:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.2:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: C:\Users\Andre\.m2\repository\org\apache\maven\surefire\surefire-booter\2.7.2\surefire-booter-2.7.2.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: C:\Users\Andre\.m2\repository\org\apache\maven\surefire\surefire-api\2.7.2\surefire-api-2.7.2.jar Scope: compile
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[WARNING] Missing POM for org.apache.maven.surefire:surefire-junit3:jar:2.7.2: Error resolving project artifact: Failure to find org.apache.maven.surefire:surefire-junit3:pom:2.7.2 in http://mirrors.ibiblio.org/pub/mirrors/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of ibiblio.org has elapsed or updates are forced for project org.apache.maven.surefire:surefire-junit3:pom:2.7.2
[DEBUG]   org.apache.maven.surefire:surefire-junit3:jar:2.7.2:test (selected for test)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.626s
[INFO] Finished at: Tue Aug 16 13:18:42 PDT 2011
[INFO] Final Memory: 8M/154M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.7.2:test (default-test) on project QServer: Error to resolving surefire provider dependency: Missing:
[ERROR] ----------
[ERROR] 1) org.apache.maven.surefire:surefire-junit3:jar:2.7.2
[ERROR] 
[ERROR] Try downloading the file manually from the project website.
[ERROR] 
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.apache.maven.surefire -DartifactId=surefire-junit3 -Dversion=2.7.2 -Dpackaging=jar -Dfile=/path/to/file
[ERROR] 
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.apache.maven.surefire -DartifactId=surefire-junit3 -Dversion=2.7.2 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR] 
[ERROR] Path to dependency:
[ERROR] 1) dummy:dummy:jar:1.0
[ERROR] 2) org.apache.maven.surefire:surefire-junit3:jar:2.7.2
[ERROR] 
[ERROR] ----------
[ERROR] 1 required artifact is missing.
[ERROR] 
[ERROR] for artifact:
[ERROR] dummy:dummy:jar:1.0
[ERROR] 
[ERROR] from the specified remote repositories:
[ERROR] ibiblio.org (http://mirrors.ibiblio.org/pub/mirrors/maven2, releases=true, snapshots=false)

【问题讨论】:

  • Maven 日志会很有用...而且 Maven 应该在下载失败时重试(至少在校验和失败时)。
  • 首先,如果您从命令行更新到最新版本的 maven (3.0.3)
  • 您是否尝试过使用上述存储库以外的其他存储库?
  • 此外,这听起来像是网络问题....
  • 糟糕。点击进入太快了。我不确定这是校验和错误,但如果我没有找到解决方法,我会登录。我找到了“一个”解决方案。我在我的 settings.xml 文件中添加了一个镜像以指向mirrors.ibiblio.org/pub/mirrors/maven2,它第一次工作。我现在也将升级到 3.0.3,看看是否可以修复它。谢谢大家!

标签: java windows maven


【解决方案1】:

好的,伙计们,我在下载大文件时遇到了同样的问题。我们可能都在使用轻量级 HTTP wagon。如果您查看文档:

http://maven.apache.org/wagon/wagon-providers/wagon-http-lightweight/

已知限制:

主要限制是您不能下载不完全适合内存的数据。

所以我为 Maven 增加了内存:

export MAVEN_OPTS="-Xmx1024m"

瞧,它有效。 (!!!!)

【讨论】:

  • 自从您的评论是在 2013 年发布的,我想指出的是,今天(2018 年)这对我来说仍然适用于 Maven 版本 3.0.5 和 Java 版本 1.8.0_162。谢谢!
  • 2020 年仍有帮助
【解决方案2】:

我遇到了同样的问题。就我而言,AVG 防病毒软件阻止了 Maven 下载工件。暂时禁用它会有所帮助。

【讨论】:

  • 更具体地说,AVG Link Scanner 与 Java 7 结合使用。禁用该 AVG Link Scanner 或恢复到 Java 6,您应该一切顺利(我尝试了 3 或 4 次转每个组件打开和关闭,我很确定它只是链接扫描器)。
  • 我尝试向 AVG Online Shield 添加 JAR 位置的例外,但无济于事。必须暂时禁用 AVG 才能下载工件。 :(
  • 给这家伙一枚勋章!
【解决方案3】:

不管它的价值如何,这就是我所经历的答案。

如果我在 v3.0.1 离开 Maven,我必须添加上面列出的镜像,它可以正常工作。

如果我将 Maven 升级到 v3.0.3,那么我必须删除上面列出的镜像才能使其正常工作。 :-)

我在两台不同的机器上尝试过这个并且有相同的行为。这可能意味着这里的网络应该受到指责,因为它们都通过同一个路由器。

无论如何,这里基本上有两种解决方法。我不确定是否是“正确”的回应,但它们至少让我继续前进。

感谢所有提交的答案。

【讨论】:

【解决方案4】:

我通过降级到 Java 6 解决了这个问题。

【讨论】:

    【解决方案5】:

    在我的情况下,我去了本地存储库(~/.m2/repository/),找到了相应的组,发现下载卡住的工件有两个带有.part.part.lock扩展名的文件。删除它们会有所帮助。

    【讨论】:

      【解决方案6】:

      不久前我遇到了完全相同的问题 - 长话短说,这是一个网络问题。而且,是的,就像您尝试的那样,我可以使用网络浏览器获取文件就好了。

      出于测试目的,您是否使用了代理,并且 Maven 中的代理设置与浏览器匹配?

      【讨论】:

      • 我根本没有输入任何代理设置,但我想知道连接到我的 ISP (Comcast) 时我的路由器是否有一些黑魔法?
      • 所以家庭 ISP 不是公司网络 - ISP 喜欢使用 HTTP。在我的情况下,代理是使用 http 的首选方法,但我们可以跳过它,因为我们知道某些流量可能会被 QoS 丢弃 - 这就是发生在我身上的事情。我将四处寻找是否找到设置 maven 重试或 http 选项的方法 - 也许浏览器正在为您重试,或者只是在做与 mvn 不同的事情(如 HTTP PUSH - 或没有)。
      【解决方案7】:

      我有类似的问题。改变的是 nexus 向 VPN 的转移。原来我缓存了 DNS 条目。

      刷新 DNS 修复了它。对于类似 Ubuntu 的系统的记录:

      sudo systemd-resolve --flush-caches
      

      【讨论】:

        猜你喜欢
        • 2013-05-22
        • 2020-07-06
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 2019-06-20
        • 2016-01-11
        相关资源
        最近更新 更多