解决 Http Maven 私仓的依赖包无法下载,提示被 maven-default-http-blocker 拦截

这篇具有很好参考价值的文章主要介绍了解决 Http Maven 私仓的依赖包无法下载,提示被 maven-default-http-blocker 拦截。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、环境

  1. 用到了HTTP接口的Maven私仓
  2. maven版本是3.8.1级以上
  3. pom文件已经配置了repository

二、错误信息

才尝试更新pom文件,重新下载依赖,或者,mvn clean compile重新编译的时候,会提示类似下面的错误信息:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.477 s
[INFO] Finished at: 2023-03-29T09:02:46+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project app-demo: Could not resolve dependencies for project markvivv:app-demo:jar:3.0.0.RELEASE: The following artifacts could not be resolved: simpleteam:simpleteam:jar:1.0.0 (present, but unavailable): simpleteam:simpleteam:jar:1.0.0 was not found in http://192.168.0.18:8081/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced -> [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

另一种可能的错误提示: 

simpleteam:simpleteam:jar:1.0.0 was not found in http://192.168.0.18:8081/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced

尝试使用 -U 标记(强制更新快照)运行 Maven 导入

 错误的提示都指向 maven-default-http-blocker

三、错误原因

这是由于Maven官方为了解决CVE-2021-26291安全问题,在3.8.1版本开始发布这个特性,默认禁止从不安全的仓库下载依赖。

maven官方对CVE-2021-26291说明:

  1. 由于自定义资源库使用HTTP,可能出现中间人攻击的情况。虽然越来越多的存储库使用HTTPS,但这并不都是这样。这意味着Maven Central包含有通过HTTP引用URL的自定义仓库的POM。这使得通过这类资源库的下载成为MITM攻击(中间人攻击)的目标。同时,开发者可能没有意识到有些下载使用的是不安全的URL。由于上传到Maven Central的POM是不可更改的,因此需要对Maven进行修改。为了解决这个问题,我们用<blocked>参数扩展了镜像配置,并增加了一个新的external:http:*镜像选择器(和现有的external:*一样),意思是 "任何使用HTTP的外部URL"。
  2. 我们决定在默认情况下阻止这样的外部HTTP资源库:这是通过在conf/settings.xml中提供一个阻止不安全的HTTP外部URL的镜像来实现的。
  3. 由于自定义资源库使用废弃的域名,可能出现域名劫持的情况。Sonatype已经分析了哪些域名被遗弃,并对这些域名进行了认领。
  4. 可能通过重定向到自定义存储库来劫持下载。这个是最难分析和解释的。简而言之就是:你是安全的,依赖项只在其上下文中从存储库下载。所以有两个主要问题:什么是上下文,什么是顺序?顺序在版本库顺序页上有描述。
    1. 第一组软件库是在 settings.xml 中定义的(包括用户和全局)。
    2. 第二组仓库是基于继承性的,最终超级POM包含Maven Central的URL。
    3. 第三组是最复杂的一组,但对理解语境很重要:从依赖路径到工件的有效POM的资料库。因此,如果一个依赖关系是由另一个依赖关系或Maven项目定义的,也会包括它们的仓库。说到底,这不是一个bug,而是一个设计特性。

所以一切为了安全,maven3.8.1版本开始加上了限制。

四、解决办法

4.1. 删除 maven-default-http-blocker 配置

文件位置在 ${maven.home}/conf/settings.xml 或 ${user.home}/.m2/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>

但是,这样子删除之后违反了maven添加这样一个特性的初衷,引入了风险项。并且这种设置会要求使用到私仓的客户端都进行修改,如果推广培训不好,每个人都会需要查一遍这个问题,然后才知道要做对应的配置,下面安排第二种方法。

4.2. 创建项目个性化的maven配置,随代码一起提交到代码仓库

在项目的根目录添加一个.mvn的目录,并配置maven.config和local-settings.xml两个文件。

maven 3.8.1以上,maven 3.9以下maven.config文件内容如下:

--settings ./.mvn/local-settings.xml

maven 3.9及以上版本的maven.config文件内容如下,注意配置项要放到新的一行,否则配置不生效:

--settings
./.mvn/local-settings.xml

local-settings.xml配置文件内容,注意mirrorOf的ID值需要和pom.xml中的私仓ID一致:

<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>my-repository-http-unblocker</id>
            <mirrorOf>markvivv-repos</mirrorOf>
            <name></name>
            <url>http://192.168.7.18:8081/repository/maven-releases</url>
        </mirror>
    </mirrors>

pom.xml中私仓的示例配置,注意ID和.mvn/local-settings.xml中的mirrorOf配置的ID一致:

    <repositories>
        <repository>
            <id>ovit-repos</id>
            <name>markvivv-repos</name>
            <url>http://192.168.7.18:8081/repository/maven-releases</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

把.mvn目录提交到代码仓库,这样项目的其他开发人员下载到源码的时候,就包含这个配置,不需要再做额外配置。文章来源地址https://www.toymoban.com/news/detail-481369.html

到了这里,关于解决 Http Maven 私仓的依赖包无法下载,提示被 maven-default-http-blocker 拦截的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA 配置 Maven(解决依赖下载缓慢)

    第四步 主要讲了在IDEA中配置Maven,并且导入本地自己下载的Maven,速度直接起飞!!!听我一句劝, 不要用镜像,慢的要死。自己下一个 ,然后每次用的时候一导入,速度很快!!!! Maven 是专门用于管理和构建 Java 项目的工具,Apache Maven 是一个项目管理和构建工具,它基

    2024年02月03日
    浏览(46)
  • 解决IDEA Maven依赖下载失败、Maven依赖包导入失败报红的问题(项目实操)

    在向IDEA导入一个maven项目的时候,有一些依赖就是无法下载下来,我想尽了办法,查尽了资料,还是无法解决,最后通过我的一个突发奇想解决了问题。 一、我的pom文件报红的依赖,在maven仓库官网上都可以搜索到,但是无论想什么办法,IDEA就是下载不下来依赖 二、首先列

    2024年02月16日
    浏览(56)
  • 解决Maven依赖下载问题:从阿里云公共仓库入手

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(61)
  • 解决maven的依赖下载不下来的几种方法

    每次部署测试环境,从代码库拉取代码,都会出现缺少包的情况。然后找开发一通调试,到处拷包。 方案一:pom文件注释/取消注释 注释掉pom.xml里的报红色的依赖(同时可以把本地maven库repo里对应的包删除),Import Changes,再取消注释,重新Import Changes。如果右下角没有Impo

    2024年02月09日
    浏览(41)
  • 解决IDEA Maven 下载依赖包速度过慢问题

    解决IDEA Maven 下载依赖包速度过慢问题 ,jar包下载过慢,有一部分网络原因,很大一部分是因为需要请求到国外镜像仓库,响应比较慢 右键点击项目,找到maven,选择 Open ‘settings.xml’或者Create ‘settings.xml’ 将以下代码粘入文件中,重启idea即可提高速度 idea超级镜像库,这

    2024年02月11日
    浏览(71)
  • maven的依赖下载不下来的几种解决方法

    每次部署测试环境,从代码库拉取代码,都会出现缺少包的情况。然后找开发一通调试,到处拷包。 方案一:pom文件注释/取消注释 注释掉pom.xml里的报红色的依赖(同时可以把本地maven库repo里对应的包删除),Import Changes,再取消注释,重新Import Changes。如果右下角没有Impo

    2024年02月10日
    浏览(50)
  • IDEA中Maven爆红,依赖下载失败的最全解决方案

    目录 1. 先排查Maven的配置信息是否正确 1.1 maven的settings.xml中的配置 1.2 idea中配置maven  2. 可能是网络卡顿原因,导致依赖下载失败,或者依赖下载不全,依赖包丢失 2.1 网络卡顿 2.2 maven依赖jar包下载不全,导致依赖包丢失。 3. 检查jdk版本是否正确,因为有些依赖与jdk版本不

    2024年02月16日
    浏览(53)
  • 解决maven 在IDEA 下载依赖包速度慢的问题

    当我们用idea下载maven的依赖的时候会很慢 原因:movn可能时因为idea用的时外部的镜像源 解决方法:在idea界面按两下shift建,然后搜索 setting.xml 产出原有的内容复制以下内容就后重启 当再次idea在使用idea下载依赖报包的时候速度就可以提升很多了 当我们搜索后没有这个 setti

    2024年02月07日
    浏览(60)
  • 如何解决无法npm下载electron依赖的

    使用electron,安照官方例子,结果是失败的。原因是下载官网的二进制包失败,结果不能执行。 也用了npm的镜像:registry = \\\"https://registry.npmmirror.com/\\\",也不行。 后来网上折腾一段时间,看到一个开源项目(基于electron),写到要在npm设置electron的镜像,才可以。 使用命令:npm

    2024年02月21日
    浏览(42)
  • 当IDEA加载一个MAVEN新项目时,加载不成功,无法加载依赖的解决方法

    此文为练习项目时的错误记录 当使用IDEA引入一个MAVEN新项目时,点击Reload maven按钮加载不成功,显示如下图界面: 在项目中的代码显示报红,如下图: 经查阅相关资料及反复尝试,解决方法如下: 进入File-Project Structure-Project,确认选择好自己版本的jdk,这里使用的是jdk1.

    2024年01月19日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包