即使在添加镜像后,也会出现“存储库的镜像被阻止”maven 错误

ara*_*ata 6 maven maven-mirroring

在我过去的项目中,我遇到了以 http 开头的依赖项问题,就像这个Maven Build Failure -- DependencyResolutionException 一样。解决方案是为项目添加镜像工作正常。虽然现在在另一个项目中我使用相同的依赖项,具有相同的设置,但我仍然收到错误消息。有什么想法吗?

小智 62

覆盖该镜像,让它对dummy协议做出反应。在本地${HOME}/.m2/settings.xml指定:

    <mirrors>
        <mirror>
            <id>maven-default-http-blocker</id>
            <mirrorOf>external:dummy:*</mirrorOf>
            <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
            <url>http://0.0.0.0/</url>
            <blocked>true</blocked>
        </mirror>
    </mirrors>
Run Code Online (Sandbox Code Playgroud)

  • 这是我最喜欢的解决方案......因为我可以覆盖我的个人设置中的配置,并且我不必弄乱主配置文件。 (3认同)
  • 再详细一点,这应该就是这个问题的答案。 (2认同)
  • 不知道为什么,但也为我工作。 (2认同)

Cat*_*ord 41

如果 Stanislav Kardashov 的解决方案没有帮助,只需删除(或注释掉)maven settings.xml 中的整个 http-blocker 镜像即可。

路径(如斯坦尼斯拉夫回答中指出):/usr/share/maven/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>true</blocked>
    </mirror>
        -->
Run Code Online (Sandbox Code Playgroud)

  • 在 IntelliJ 中使用捆绑版本时,这似乎是唯一有效的解决方案(除了使用过时的 Maven 版本)。该文件位于 IntelliJ 的安装目录中的“/plugins/maven/lib/maven3/conf/settings.xml”下。 (7认同)

Str*_*ess 28

如果我不得不猜测,您正在运行最新的 Maven,它会禁用 HTTP。尝试降级到 Maven 3.6。

[编辑] 也就是说,斯坦尼斯拉夫的答案是最正确的。


Ris*_*rve 16

如果您使用的 Maven 存储库有可用的安全端点,请尝试将镜像从 http 转换为 https。这在汇合的情况下对我有用。


Sta*_*hov 9

Maven 现在默认禁用所有不安全的 http://* 镜像。这是 maven 维护者的解释:http : //maven.apache.org/docs/3.8.1/release-notes.html#cve-2021-26291

现在越来越多的存储库使用 HTTPS,但情况并非总是如此。这意味着 Maven Central 包含带有自定义存储库的 POM,这些存储库通过 HTTP 引用 URL。这使得通过此类存储库下载的内容成为 MITM 攻击的目标。同时,开发人员可能没有意识到某些下载使用了不安全的 URL。由于上传到 Maven Central 的 POM 是不可变的,因此需要对 Maven 进行更改。为了解决这个问题,我们使用参数扩展了镜像配置,并添加了一个新的 external:http:* 镜像选择器(类似于现有的 external:*),意思是“任何使用 HTTP 的外部 URL”。决定默认阻止此类外部 HTTP 存储库:这是通过在 conf/settings.xml 中提供一个镜像来阻止不安全的 HTTP 外部 URL 来完成的。

解决方案(出于上述安全原因不推荐)可能是<blocked>从默认 Maven settings.xml 文件 (/usr/share/maven/conf/settings.xml) 中的镜像列表中删除部分

  • 对于 Idea 用户,请注意,Idea 可能(并且默认情况下)使用位于其他位置的捆绑 maven 和配置。您可能需要在 Idea 设置中将“Maven 主路径”更改为“/usr/share/maven”而不是“Bundled” (7认同)

小智 8

C:-> 用户-> your_user_name -> .m2 -> settings.xml

将此镜像添加到您的settings.xml 文件中。

<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>
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,我没有修改“settings.xml”文件。我刚刚在 URL 标记中添加了 和 S 到 HTTP,即“https”以及 Jasper URL 的其余部分,它解决了我的依赖关系。 (2认同)