什么是Maven快照(SNAPSHOT)

问题

在使用maven进行依赖管理时,有的版本号后面会带有"-SNAPSHOT",有什么作用呢?

<dependency>
    <groupId>com.smallbeef</groupId>
    <artifactId>dubbo-interface</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
 
<!--引入dubbo的依赖-->
<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
 
<!-- 引入zookeeper的依赖 -->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

解答

带有"-SNAPSHOT"表示使用的依赖为快照版本,不带"-SNAPSHOT"为正式版本

正式版本

构建的时候会先在本地仓库中查找是否已经有了这个依赖库,若是没有的话才会去远程仓库中去拉取。
假设项目中现在依赖"abc-1.0",在第一次构建的时候会把该库从远程仓库中下载到本地仓库缓存,之后再次构建都不会去访问远程仓库了。如果远程仓库中代码进行了修改,但版本号依旧叫"abc-1.0",那么此依赖没法获得最新更新。只有版本号更新后(如"abc-1.1")才能拉取到最新代码。

快照版本

每次构建时,会优先去远程仓库中查看是否有最新的"abc-1.0-SNAPSHOT.jar",若是有则下载下来使用。即便本地仓库中已经有了"abc-1.0-SNAPSHOT.jar",它也会尝试去远程仓库中查看同名的jar是不是最新的。在配置Maven的Repository的时候中有个配置项,能够配置对于SNAPSHOT版本向远程仓库中查找的频率。频率共有四种,分别是always、daily、interval、never。

频率详情
always每次都去远程仓库查看是否有更新
daily每天只在第一次的时候查看是否有更新,当天的其它时候则不会查看
interval容许设置一个分钟为单位的间隔时间,在这个间隔时间内只会去远程仓库中查找一次
never不会去远程仓库中查找(和正式版本相同)

扩展小知识:
快照更新频率可以在maven的setting.xml里面配置

<repositories>
   <repository>
     <id>xr-snapshots</id>
       <url>http://nexus.alibaba.com/repository/snapshots/</url>
     <snapshots>
       <enabled>true</enabled>
       <!-- 注意 -- >
       <updatePolicy>always</updatePolicy>
     </snapshots>
     <releases>
       <enabled>false</enabled>
       <!-- 注意 -- >
       <updatePolicy>always</updatePolicy>
     </releases>
   </repository>
 </repositories>

<pluginRepositories>
   <pluginRepository>
     <id>xr-plugins</id>
     <name>xingren plugins</name>
     <url>http://nexus.alibaba.com/repository/public/</url>
     <releases>
         <enabled>true</enabled>
         <!-- 注意 -- >
         <updatePolicy>always</updatePolicy>
     </releases>
      <snapshots>
          <enabled>true</enabled>
          <!-- 注意 -- >
          <updatePolicy>always</updatePolicy>
      </snapshots>
   </pluginRepository>
</pluginRepositories>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值