首页
学习
活动
专区
工具
TVP
发布

电光石火

专栏作者
935
文章
2247344
阅读量
55
订阅数
镜像版本号SNAPSHOT,LATEST 和 RELEASE
LATEST 和 RELEASE 版本 LATEST是指某个特定构件最新的发布版或者快照版(snapshot),最近被部署 到某个特定仓库的构件。RELEASE是指仓库中最后的一个非快照版本。 在Maven 2.0.9之前,Maven会自动将核心插件更新 至LATEST版本。这种行为导致了很多奇怪现象,因为新版本的插件可能会有一些bug, 甚至是行为变更,这往往使得原来的构建失败。当Maven自动更新核心插件的时候,我 们就不能保证构建的重现性,因为插件随时都可能从中央仓库更新至一个新的版本。从Maven 2.0.9开始,Maven从根本上锁住了一组核心插件的版本。非核心插件,或者说没 有在超级POM中指定版本的插件仍然会使用LATEST版本去从仓库获取构件。由于这个原 因,你在构件中使用任何一个自定义非核心插件的时候,都应该显式的指定版本号。 SNAPSHOT 这个事maven的特殊版本号,maven在处理的时候,把SNAPSHOT字符创自动替换成时间 如你在UTC2008年2月7号下午11:08部署了这个版本,Maven就会将这个版本展开 成“1.0-20080207-230803-1”。换句话说,当你发布一个snapshot,你没有发布一个 软件模块,你只是发布了一个特定时间的快照版本。 对于SNAPSHOT功能,网友的一个例子  比如,你的工程要依赖的core版本是 1.0.0 版本,结果这个版本还正处于对方(叫小菜吧)的开发过程中,他利用maven命令mvn install打包成jar,并部署到服务器上,根据pom设定的版本,你顺利下载了依赖包。但小菜后续开发过程,发现了一个致命bug,那么他再操作一次,那么,即使服务器的更新是你需要的,你只能干着急,只能跟小菜吼一声,“你的版本,老子无法更新依赖包,再给我发一个新的版本上去。”小菜一听,好吧,那我把版本升到 1.0.1 版本,你通过update dependencies 下载了这个新版本的jar包。这样的情况,会循环地出现,那么你和小菜有点恼火了,maven就是老鼠钻到风箱里,两头受气,maven想能不能开发一个功能,使双方默认可以上传并打包下载到最新的开发版本,而不用修改版本号,否则开发完成之后,服务器上是一堆的release版本。有了这个思路,maven增加了划时代的功能,snapshot ,这样依赖版本为 1.0.0-SNAPSHOT (注意必须为全大写),当服务器上有更新时,会自动下载到本地,省去了不少、和小菜的沟通时间,也减小了不少由于版本问题带来的编译错误。
似水的流年
2019-12-06
3.1K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档