当前位置:   article > 正文

版本号轨范,镜像版本SNAPSHOT,LATEST 和 RELEASE 版本_latest release

latest release
版本号规范,镜像版本SNAPSHOT,LATEST 和 RELEASE 版本
如果版本号不遵守maven规范,那么maven在对版本进行排序的时候,无法识别出版本,只能按照字符串排序规则排序。

maven要求版本命名以
主版本.次版本.增量版本-限定版本,其中每个节点都可以抛弃,但至少包含一个节点,如可以为version命名为1

如1.2.3-beta-03

另外对于限定版本号的命名也要注意,当限定版本后面带有版本号的时候,比如
1.2.3-beta-10和1.2.3-beta-3之间,maven无法识别出1.2.3-beta-3<1.2.3-beta-10因为maven对限定版本的处理依然要求是数字才能识别,而beta-xxx会被识别为一个字符串,因此按照字符串排序了。
而为了解决这个问题,可以进行追加0的处理方式,比如
1.2.3-beta-3改成1.2.3-beta-003

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 (注意必须为全大写),当服务器上有更新时,会自动下载到本地,省去了不少、和小菜的沟通时间,也减小了不少由于版本问题带来的编译错误。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/296287
推荐阅读
相关标签
  

闽ICP备14008679号