概述
目录
介绍
快照版本和正式版本的区别
SNAPSHOT版本的配置
介绍
在Nexus仓库中,一个仓库一般分为public(Release)仓和SNAPSHOT仓,前者存放正式版本,后者存放快照版本。
如果在项目配置文件中(无论是build.gradle还是pom.xml)指定的版本号带有’-SNAPSHOT’后缀,比如版本号为’Junit-4.10-SNAPSHOT’,那么打出的包就是一个快照版本。
快照版本和正式版本的区别
快照版本和正式版本的主要区别在于,本地获取这些依赖的机制有所不同。
假设你依赖一个库的正式版本,构建的时候构建工具会先在本次仓库中查找是否已经有了这个依赖库,如果没有的话才会去远程仓库中去拉取。所以假设你发布了Junit-4.10.jar到了远程仓库,有一个项目依赖了这个库,它第一次构建的时候会把该库从远程仓库中下载到本地仓库缓存,以后再次构建都不会去访问远程仓库了。所以如果你修改了代码,向远程仓库中发布了新的软件包,但仍然叫Junit-4.10.jar,那么依赖这个库的项目就无法得到最新更新。你只有在重新发布的时候升级版本,比如叫做Junit-4.11.jar,然后通知依赖该库的项目组也修改依赖版本为Junit-4.11,这样才能使用到你最新添加的功能。
SNAPSHOT快照版本的包通过不同配置选择去远程仓库拉取最新包。
RELEASES版本或没标记RELEASES的包则优先查找本地仓库的包
SNAPSHOT的配置
在配置Maven的Repository的时候中有个配置项,可以配置对于SNAPSHOT版本向远程仓库中查找的频率。频率共有四种,分别是always、daily、interval、never。
always:当本地仓库中存在需要的依赖项目时,always是每次都去远程仓库查看是否有更新
daily:daily是只在第一次的时候查看是否有更新,当天的其它时候则不会查看
interval:interval允许设置一个分钟为单位的间隔时间,在这个间隔时间内只会去远程仓库中查找一次
never:never是不会去远程仓库中查找
<repositories>
<repository>
<id>myRepository</id>
<url>...</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
其中updatePolicy就是那4种类型之一。如果配置间隔时间更新,可以写作interval:XX
(XX是间隔分钟数)。daily配置是默认值。也可以使用mvn命令强制下载最新的快照版本
maven clean install -U
经验总结:所以一般在开发模式下,我们可以频繁的发布SNAPSHOT版本,以便让其它项目能实时的使用到最新的功能做联调;当版本趋于稳定时,再发布一个正式版本,供正式使用。当然在做正式发布时,也要确保当前项目的依赖项中不包含对任何SNAPSHOT版本的依赖,保证正式版本的稳定性。
最后
以上就是如意石头为你收集整理的SNAPSHOT版本的全部内容,希望文章能够帮你解决SNAPSHOT版本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复