SNAPSHOT和RELEASE区别且SNAPSHOT不实时拉包解决

本文介绍了Maven中SNAPSHOT和RELEASE关键字的用途,SNAPSHOT用于开发阶段,允许服务在版本不变时获取最新代码。RELEASE则适用于正式环境,确保版本更新时必须更改版本号。在依赖SNAPSHOT包时,可以通过配置pom.xml的repository标签来强制拉取最新版本。本地仓库、中央仓库和远程仓库的优先级为:本地仓库>中央仓库>远程仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个问题,最近在写一个通道只是提供能力的一个服务,给别的服务通过pom坐标的形式进行依赖,当我们修改了这里面的代码后推到仓库里面,那么依赖的服务重新部署怎么知道他依赖的包发生了改变要重新拉取进行编译呢,这里就说到了两个关键字SNAPSHOT和RELEASE

SNAPSHOT

我们都知道确定一个jar包是通过groupId和artifactId和version来定位,这时候如果版本号没改变,但是改变了代码,那么依赖该坐标的服务没办法识别到其进行了修改,所以我们通过在版本号上面添加关键字SNAPSHOT来向依赖该坐标的服务说明当前坐标是会发生改变的要去拉取最新的jar包不可以使用本地缓存的jar,这样即使版本号不变通过关键字也可以做到动态的去拉取最细的代码

    <groupId>springbootParent</groupId>
    <artifactId>mySpringbootParent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

RELEASE

有的时候我们的服务是部署在正式环境,只要有一点修改都需要发版本和打tag,那么就需要用到RELEASE这个关键字是不允许修改的,如果修改必须要修改版本号,这里简单来说就是如果我们的正式包依赖了三方仓库的一个1.0-SNAPSHOT版本的包,如果我们不使用RELEASE的话如果三方对该1.0-SNAPSHOT的包进行了修改且推到了仓库那么我们的正式服务就会实时的去到对方仓库拉到最新的代码可能会引发报错,而使用了RELEASE就会先判断本次仓库是否有这个包,如果有就是用本地的如果没有采取拉

    <groupId>springbootParent</groupId>
    <artifactId>mySpringbootParent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-RELEASE</version>

有时候会遇到我们明明用的是snapshot但是打包的时候并没有去拉取最新的snapshot包,这其实在pom里面有一个配置可以去控制一下,我们可以去到依赖其他snapshot包的微服务pom里面的repository标签里面添加一下配置

 <repositories>
        <repository>
            <id>定义的id</id>
            <name>定义的名字</name>
            <url>公共服务的仓库地址</url>
            <!--下面的snapshots和releases的意思是是否从上面的中央仓库下载
            							稳定版本和snapshot版本的jar包-->
            <snapshots>
                <enabled>true</enabled>
                <!--每次打包都回去拉取最新的snapshots包-->
                <updatePolicy>always</updatePolicy>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

这里做一下说明,关于仓库有几个比较重要的概念:本地仓库,中央仓库,远程仓库分别对着三个做一下解释

  • 本地仓库:本地仓库就是我们电脑本地maven的仓库地址,一般在idea的setting里面搜索maven就可以配置见图:
    在这里插入图片描述

  • 中央仓库:这个就是我们在pom里面配置的repository这个就是中央仓库,这个标签里面有snapshots和releases两个标签用于说明releases和snapshot两种类型包是否从中央仓库拉取

  • 远程仓库:这个就是我们在setting里面mirrors配置的地址

最后说一下这三个仓库的优先级: 本地仓库 > 中央仓库 > 远程仓库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值