Maven 构建失败 -- DependencyResolutionException

Maven Build Failure -- DependencyResolutionException

提问人:Moe Obaid 提问时间:4/7/2021 更新时间:6/26/2023 访问量:120261

问:

我正在安装一个具有 Maven 依赖项的包,并在尝试清理它时收到 DependencyResolutionException。 克隆后,我导航到该目录并运行以下命令以安装它,而不会出现错误:

mvn install:install-file -Dfile=./lib/massbank.jar -DgroupId=massbank  -DartifactId=massbank -Dversion=1.0 -Dpackaging=jar
mvn install:install-file -Dfile=./lib/metfusion.jar -DgroupId=de.ipbhalle.msbi  -DartifactId=metfusion -Dversion=1.0 -Dpackaging=jar

然后:

mvn clean package 

替换为以下控制台输出:

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< MassBank2NIST:MassBank2NIST >---------------------
[INFO] Building MassBank2NIST 0.0.2-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.450 s
[INFO] Finished at: 2021-04-07T01:08:28-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project MassBank2NIST: Could not resolve dependencies for project MassBank2NIST:MassBank2NIST:jar:0.0.2-SNAPSHOT: Failed to collect dependencies at edu.ucdavis.fiehnlab.splash:core:jar:1.8: Failed to read artifact descriptor for edu.ucdavis.fiehnlab.splash:core:jar:1.8: Could not transfer artifact edu.ucdavis.fiehnlab.splash:core:pom:1.8 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [EBI (http://www.ebi.ac.uk/intact/maven/nexus/content/repositories/ebi-repo/, default, releases+snapshots), releases (http://gose.fiehnlab.ucdavis.edu:55000/content/groups/public, default, releases+snapshots)] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

如有必要,我可以发布调试日志记录开关的输出,但它很长。我也可以发布 pom.xml,但是据我所知,它指的是所需的存储库。

我搜索过类似的帖子,但似乎没有一个包含相同系列或类似的错误。有人可以帮我破译这些错误吗?

谢谢!

maven pom.xml 依赖项解析

评论

0赞 Vadzim 12/21/2021
这回答了你的问题吗?如何禁用 maven 阻止外部 HTTP 存储库?
2赞 J'e 1/13/2022
我通过将 URL 从 http 更改为 https 来修复我的

答:

19赞 DPWork 4/9/2021 #1

Maven 版本 3.8.1 的发行说明中明确提到了错误“存储库被阻止的镜像”:

当我的HTTP存储库被阻止时,如何解决?

如果存储库是在 pom.xml 中定义的,请在源代码中修复它。

如果存储库是在其中一个依赖项 POM 中定义的,你将收到如下消息:

[ERROR] Failed to execute goal on project test: Could not resolve dependencies for project xxx: Failed to collect dependencies at my.test:dependency:version -> my.test.transitive:transitive:version: Failed to read artifact descriptor for my.test.transitive:transitive:jar:version: Could not transfer artifact my.test.transitive:transitive:pom:version from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [blocked-repository-id (http://blocked.repository.org, default, releases+snapshots)]

他们继续提供一些方法来避免这个问题:

要修复的选项包括:

  • 将依赖项版本升级到较新的版本,将过时的 HTTP 存储库 URL 替换为 HTTPS URL,

  • 保留依赖项版本,但在设置中定义镜像。

另外,我想,更简单、更短期的选择是将您的 Maven 版本回滚到 3.8.1 之前的任何版本。

12赞 Satya Kaveti 4/12/2021 #2

使用 apache-maven-3.6.3,它只使用 http

https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip

评论

1赞 Steve Ellis 4/21/2021
感谢您提供指向 maven 版本的快速链接,如果存储库是 http 而不是 https,则不会抱怨。这对我有用。
0赞 MikeKulls 12/15/2022
投反对票,因为回滚版本是一个糟糕的修复,没有必要
0赞 Philippe Cloutier 3/8/2023
3.6.3 不仅使用(未加密的)http。它支持 HTTPS,但默认情况下根本不阻止未加密的 http。
148赞 Rens Verhage 4/16/2021 #3

您不必降级 Maven。这里发生的事情是,从 3.8.1 开始,Maven 附带了一个默认配置来阻止所有 HTTP(不安全)存储库。最好的方法是升级您的存储库并使其安全 (HTTPS)。

但是,你可以告诉 Maven 允许从不安全的存储库下载,方法是将此镜像添加到你的:~/.m2/settings.xml

<mirror>
  <id>insecure-repo</id>
  <mirrorOf>external:http:*</mirrorOf>
  <url>http://www.ebi.ac.uk/intact/maven/nexus/content/repositories/ebi-repo/</url>
  <blocked>false</blocked>
</mirror>

设置为将解决您的问题。请注意,上面的代码片段假定 的存储库镜像了所有不安全的 HTTP 存储库(这就是意思)。blockedfalsewww.ebi.ac.ukexternal:http:*

您还可以取消阻止单个存储库。例如,JasperSoft 存储库不安全,我通过以下命令解锁它:

<mirror>
  <id>jaspersoft-third-party-mirror</id>
  <mirrorOf>jaspersoft-third-party</mirrorOf>
  <url>http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
  <blocked>false</blocked>
</mirror>

评论

1赞 Rens Verhage 4/20/2021
更新了我的答案,说明如何取消阻止单个存储库。
0赞 DPWork 4/21/2021
谢谢 - 我意识到我把我的声明放在个人资料中,所以它没有被拿起。<mirror>
0赞 xuehui 6/2/2021
如果我得到 2 个不同的存储库作为 repo1 和 repo2,则为这两个存储库创建 2 个镜像,如下所示,但我仍然收到错误消息。 <mirror> <id>repo1-mirror</id> <mirrorOf>repo1</mirrorOf> <url>xx/</url> <blocked>false</blocked> </mirror><mirror> <id>repo2-mirror</id> <mirrorOf>repo2</mirrorOf> <url>xxyyy/</url> <blocked>false</blocked> </mirror>
0赞 Ojonugwa Jude Ochalifu 5/27/2022
标签现在是一个问题。脸掌<blocked></blocked>
0赞 Mahmoud Saleh 9/18/2023
使用第一个镜像出现 401 错误
12赞 Eric 4/21/2021 #4

使用 apache-maven-3.8.1,添加以下内容可以解决此类问题:~/.m2/settings.xml

<mirrors>
  <mirror>
    <id>internal-repository</id>
    <name>Maven Repository Manager running on https://repo1.maven.org/maven2</name>
    <url>https://repo1.maven.org/maven2</url>
    <mirrorOf>central</mirrorOf>
  </mirror>
</mirrors>

请参阅此链接 https://maven.apache.org/guides/mini/guide-mirror-settings.html 以了解发生错误的原因。

32赞 Maksym 5/8/2021 #5

如果你无权访问,因为你的生成由云 CI/CD 处理,或者你想要与团队成员共享此解决方案。最好的方法是在项目中创建自己的 maven 设置文件。~/.m2/settings.xml

  1. 在项目中创建文件夹。.mvn
  2. 在包含此类内容的文件夹中创建文件(在此示例中,我们取消阻止镜像的 http 连接):custom-settings.xml.mvnreleases.java.net
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
    <mirrors>
        <mirror>
            <id>releases-java-net-http-unblocker</id>
            <mirrorOf>releases.java.net</mirrorOf>
            <name>releases.java.net</name>
            <url>http://maven.java.net/content/repositories/releases/</url>
            <blocked>false</blocked>
        </mirror>
    </mirrors>
</settings>
  1. 在文件夹内创建包含此类内容的文件:maven.config.mvn
--settings ../.mvn/custom-settings.xml

或者你可以直接运行.mvn clean install --settings .mvn/custom-settings.xml

43赞 DIVAKAR MANTRI 5/10/2021 #6

打开文件 ${MAVEN_HOME}/conf/settings.xml

并注释这些行。

<mirror>
    <id>maven-default-http-blocker</id>
    <mirrorOf>external:http:*</mirrorOf>
    <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
    <url>http://0.0.0.0/</url>
    <blocked>false</blocked>
</mirror>

评论

0赞 Ojonugwa Jude Ochalifu 5/27/2022
这是什么版本的 maven?找不到
0赞 Dariopnc 7/19/2022
@OjonugwaJudeOchalifu发生在我身上3.8.4
0赞 ScottD 12/2/2022
这个解决方案对我来说效果很好。我们的内部 Artifactory 服务器是在没有 SSL 的情况下设置的。在升级到 maven 3.8.6 后,这将停止故障转移到“central”。之前我们使用 maven 3.2.1,不安全的本地存储库没有被阻止。非常感谢。:)
0赞 Devi Prasad Patnaik 5/20/2021 #7

apache-maven-3.6.3-bin 将解决 maven-default-http-blocker (http //0.0.0.0/) 阻塞问题(为我修复),它对我有用

评论

2赞 Scott Kurz 5/21/2021
这与@Satya Kaveti的答案相同,根本原因已经详细解释过。
-3赞 Varun J.P 8/2/2021 #8

最终不得不降级到 MVN 3.5

brew 卸载 maven

安装 mvn 3.5 的说明可以在以下位置找到

https://formulae.brew.sh/formula/[email protected]

4赞 dobrivoje 12/29/2021 #9

我有一个类似的问题,但与Vaadin有关。 有最简单的解决方案,那就是用 https:// 替换所有 http://

这是一个例子:

<repository>
    <id>vaadin-addons</id>
    <url>https://maven.vaadin.com/vaadin-addons</url>
</repository>

评论

0赞 Ahmed Ghoneim 10/4/2022
生成成功,但出现警告。
2赞 Rans 1/19/2022 #10

这是由于最新的 maven 阻止了不安全的 HTTP 连接。一种可能性是向 maven 设置 .xml 添加镜像。最好的方法是更新 pom 文件以引用安全的 HTTPS 存储库(如果可用)。例如,我在 pom.xml 中的以下配置中遇到了同样的问题。

<repositories>
    <repository>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
            <checksumPolicy>ignore</checksumPolicy>
        </releases>
        <id>wso2-nexus</id>
        <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
    </repository>
</repositories>

我能够通过将URL更新为以下来解决问题。在这里,我指的是在我的情况下可用的 HTTPS 存储库。

<url>https://maven.wso2.org/nexus/content/groups/wso2-public/</url>
2赞 Kidane 2/2/2022 #11

对我来说,我不得不从网站降级到旧版本 3.6.3,疯狂的问题消失了,希望 maven 社区可以在不对设置 .xml 执行任何操作的情况下解决这个问题。

1赞 Ajit Surendran 1/27/2023 #12

新的 mvn 版本不支持 http(不安全的存储库)

1赞 Tomasz 6/26/2023 #13

您应该从 MVN_DIRECTORY/conf/setting 中删除镜像.xml

<mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
</mirror>