为什么maven没有3.7的版本

前言

今天小编,想看下maven的最新版本,然后,打开maven的官网,发现最新版本是3.8.6了。感叹时光匆匆啊,没几年的时间更新了这么多个版本,小编还在使用3.6.3版本。下图是官网的发布历史。
在这里插入图片描述

为什么没有3.7版本呢

有没有发现一个问题,从2019-11-25日发布了3.6.3版本后,2021-04-04日直接就到了3.8.1版本。3.7呢?被吃了么。于是乎,小编开始查找原因。最终在3.8.1版本的发行说明中找到了。

  • 为什么不是 3.6.4?
    这不仅仅是一个错误修复,因为它包含三个导致默认行为更改的功能(外部 HTTP 不安全 URL 现在默认被阻止):如果您使用现在被阻止的存储库,则使用这个新的 Maven 版本时您的构建可能会失败。请在升级前检查并最终修复。
  • 为什么不是 3.7.0?
    Apache Maven 3.7.0 过去曾宣传它将是第一个您可以选择激活构建/消费者功能的版本:包含此功能的版本已重命名为 4.0.0。重用 3.7.0 可能会导致混淆,因此我们选择了下一个可用的次要版本。
  • 为什么不是 3.8.0?
    每个版本都有一个 72 小时以上的投票期。在 3.8.0 的投票过程中发现了一个错误,这个错误足以取消投票。使用 Maven,我们会刻录版本,以确保我们总是在谈论相同的版本。这样就永远不会混淆使用的是哪个 Maven 3.8.0。

所以,为啥直接到了3.8.1版本就比较明朗了。这里也暴露出一个问题,就是如果依赖包中使用了http不安全的url,则在构建的时候会报错。

当我的 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)]

要修复的选项是:

  • 将依赖版本升级到更新版本,用 HTTPS 替换过时的 HTTP 存储库 URL
  • 保留依赖版本,但在您的设置中定义一个镜像。

总结

之所以,直接到了3.8.1版本,主要原因还是新增了三个导致默认行为更改的功能,比如说存储库必须使用https。

针对解决办法,如果将依赖升级可以搞定,那直接升级最好了;如果需要保留版本,配置镜像,那还不如退回到3.6.3来的实在。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值