博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
私服release库和snapshot库的区别
阅读量:5814 次
发布时间:2019-06-18

本文共 2513 字,大约阅读时间需要 8 分钟。

  hot3.png

小明:“新需求开发完了,马上要上线,先在j-one中打个包测试一下吧~!“

编译完成后,部署测试环境,“纳尼!测试环境起不来了,我开发环境正常啊!什么情况!!!”

于是小明开始查找问题:

回查代码,没问题;

tomcat、jdk等环境配置,没问题;

找到了, “XXXX-1.0-SNAPSHOT.jar”包怎么变大了???

为什么包会变大呢?原来是snapshot包的特征:允许随时同版本更新jar!!!私服中jar包提供方更新了jar,小明重新引用后,可能因为代码内容变化引起的问题。这种情况轻则编译通不过,测试环境启动有问题,重则引起线上事故!正式发布上线的代码要依赖release版本包保证稳定!

所以私服release库和snapshot库的正确使用方式是什么,下面将详细给大家介绍:

1.     release库(发布库)使用规则及场景:

release库是存放稳定版本包的仓库,线上发布的程序都应从release库中引用正确版本进行使用

release库仓库名中带有“releases”标识,包括libs-releases-local,plugins-releases-local两个仓库。私服中release库使用规则如下:

a) release库不允许删除jar;

b) release库不允许同版本更新jar包(即同一个版本jar包只存在一个);

c) release库上传的jar包版本号(version)不能以“-SNAPSHOT”结束(版本号中的SNAPSHOT是release版和snapshot版区别的唯一标识);

d) 第三方包(非公司内部开发)仅可引用release版

e) 如可能,请提供接口对应源码,方便引用方使用。

release库使用场景:

根据上述release库的使用规则可知,若在开发过程中引用的不是release版的库,很有可能因为jar包更新后引用方不知道而引起代码错误,所以在如下场景场景中,请使用release仓库:

上传/发布:①当代码构建出的jar需要给其他程序提供服务时;当第三方提供的jar包或其他类型的依赖包不在远程中央仓库中时;请将正式发布版的jar用命令deploy或者在web端手动上传至私服对应的release仓库。

②如果是jar包提供方,请在代码变动时及时更新私服中对应的jar包版本,并联系管理员将淘汰jar包下线,以免引起引用事故;并及时更新发布包releasenotes(推荐在CF中维护),使引用方及时获取版本更新信息。

下载/依赖:①当代码需要使用第三方包时,除非对方代码仍在开发过程中,否则请选择三方包的正式release(发布)版本

②如提供方是公司内部其他系统,并且该系统未提供release版本包,请主动要求该系统负责人提供release版本包,以保证开发代码版本稳定,并且关注该包的版本升级情况。

2.     snapshot库(快照库)使用使用规则及场景:

snapshot库是存放中间版本包的仓库,代表该库中jar包的程序处于不稳定状态。当代码在开发过程中有其他程序需要引用时,可以提供snapshot版jar包用于调试和测试。由于snapshot库的包依然处于测试状态,所以随时可以上传同版本最新包来替换旧包,基于这种不稳定状态,maven允许snapshot库中的包被编译时随时更新最新版,这就可能会导致每次打包编译时同一个版本jar会包含不同的内容,所以snapshot库中的包是不能用来发布的;

snapshot库仓库名中带有“snapshots”标识,包括libs-snapshots-local,plugins- snapshots-local两个仓库。私服中snapshot库使用规则如下:

a) 快照库可以删除jar;

b) 快照库可以同版本更新jar包;

c) 第三方包(非公司内部开发)不允许引用快照版

d) 快照库仅可用来联调测试环节使用,不建议用于线上的稳定发布版本

e) 快照库上传的jar包版本号(version)必须以“-SNAPSHOT”结束,并上传至私服后系统将自动将“-SNAPSHOT”替换为时间戳串(本地代码引用时依然用“-SNAPSHOT”结束的版本号,无需替换时间戳),一个快照包线上将存在至少两个版本。

snapshot库使用场景:

根据上述snapshot库的使用规则可知,snapshot版的包仅供中间过程以供临时引用,若在最终发布过程中引用,很有可能因为jar包被更新或者未更新而引用方不知道而引起代码错误,所以请仅在如下场景场景中使用snapshot仓库:

上传/发布:开发中的代码构建出的jar需要给其他程序提供服务时,请将snapshot版的jar用命令deploy或者在web端手动上传至私服对应的snapshot仓库。

下载/依赖:当代码需要使用其他开发过程中代码的jar包时,请依赖该包的snapshot(快照)版本。maven类型工程使用过程中请使用“-U”强制更新命令,来获取最新版本包。

3.     常见问题

①    上传jar包后,编译时发现代码找parent包,但是私服找不到jar,而且代码中也不需要这个parent

原因:问题多发于web端上传jar包时,自动生成pom.xml 文件中自带<parent/>节点

解决:使用web端上传时,请注意自行删除节点配置。

② 下载不了最新snapshot版本的jar包

原因:发布snapshot版本未连同对应的pom一起发布,只有jar包,没有pom,在maven编译时候会直接报错pom找不到,或者因jar包未更新编译报错。

解决:重新连同jar包一起发布即可解决。

③ 译后jar包变多或变少

原因:编译环境中传递依赖引用的快照包版本低,引用了错误版本的包进入代码。

解决:1.使用如下命令,检查依赖树,确定是哪个包引用到错的版本:mvn  dependency:tree;2.清除编译环境未更新的错误包,重新编译。

转载于:https://my.oschina.net/u/3778436/blog/1618564

你可能感兴趣的文章
shell中一些常见的文件操作符
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
使用第三方类、库需要注意的正则类RegexKitLite的使用
查看>>
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>