maven 关于使用 snapshot 的坑

4 篇文章 0 订阅

大家好,我是烤鸭:

    今天分享一下maven项目引入"快照"版依赖的问题。

 

1.  snapshot 和 realease

顾名思义 就是 快照和稳定版。快照是不稳定的开发版本,不定时更新。稳定版不会有这个问题。

不定时更新有什么危害。

maven install 或者package 的时候,如果 pom中依赖的版本是快照版,会从私服或者中央仓库同步一下快照版本的jar包。如果这个时候jar包作者 恰好 deploy了未经测试或者改动了代码(未兼容之前的代码),就会影响到当前项目。

maven 稳定包仓库:

https://mvnrepository.com/

快照包仓库:

https://repo.spring.io/snapshot/

 

2.  举个栗子

我们以 spring-boot-parent 这个包为例,下面是这个版本 2.2.4.BUILD-SNAPSHOT 快照包地址 

https://repo.spring.io/snapshot/org/springframework/boot/spring-boot-parent/2.2.4.BUILD-SNAPSHOT/

我们看下这三个包的发布时间,是 2020.1.20 . 11点12点和16点分别发布了。

pom文件的配置。

这里强调一下 updatePolicy 属性。

(默认) always 每次打包都会看远程是否有新包

daily 当天拉过就不会再拉了

interval 指定时间间隔

never 永不(当稳定版使用)

<!--指定远程仓库地址 -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
        </repository>
    </repositories>

简单来说,当你项目里配置了快照版,如果更新的内容恰好不兼容之前的代码(方法删了或者换参数了),就会导致项目的灾难问题。以上面的为例,可能11:30 之前项目是没问题的,这时候快照仓库发了一个版本,重新打包之后,项目就起不来了。

 

3.  实际项目遇到的情况

运行正常的项目,代码没改动什么,突然报错类找不到。

跟对方沟通,才发现我们引入的是快照版,这个可太危险了...

4.  总结

其实我们这个还好,之前遇到过引用 springboot 快照版的时候,测试都正常,上线的时候一直启动失败。。。

最后发现是发布了新的快照版,而且对之前的方法有改动,快照可以在联调的时候使用,生产千万别用。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤鸭的世界我们不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值