SNAPSHOT快照版与正式版和maven的关联

Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制。在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个属性构成的,分别是groupId、artifactId以及version。这三个属性可以唯一确定一个组件(Jar包或者War包)。

 

1,Snapshots快照是什么?

      在Nexus仓库中,一个仓库一般分为public(Release)仓  和SNAPSHOT仓,前者用来存放正式版,后者用来存放快照版,

如果在项目配置文件中,(无论是在pom.xml或者build.gradle)指定的版本号带有 'SNAPSHOT' 后缀的,

比如 ‘test-1.4.1-SNAPSHOT’,那么最后打出来的jar或者war 就是快照版本的

2,快照版和正式版的区别?

          这两者的区别主要在于本地获取这些依赖的机制有所不同

正式版:如果项目依赖的是正式版,那么在项目构建时首先会看一下本地仓库有没有该依赖库,如果有,就直接从本地获取,假如本地没有,构建工具(maven 或 gradle) 就会从远程拉取,

案例:如果你发布了 test-1.4.0.jar 包,此时项目A 依赖了该jar包,那么在该项目首次构建时,构建工具(maven 或 gradle)会从远程仓库下载到本地仓库缓存,以后项目构建的时候,就会直接从本地仓库获取,不会去访问远程仓库了,如果此时更改了代码,并同步到远程,但名字仍然叫 test-1.4.0.jar的话,那么依赖这个jar包的项目就无法获取到最新的版本,你只有升级版本,比如:test-1.4.1.jar,并在项目中更改依赖版本,然后重新构建项目,就可以获得最新的版本

 

如果在实际项目中,有项目A 和 项目B  ,项目A依赖项目B,项目B不断的在进行维护和升级,这种情况下,如果项目B每次都发正式版,那么项目A也要不断的更改版本号,会贼烦,这个时候,是时候该SNAPSHOT上场了,每天日常构建项目B的SNAPSHOT版本,而每次构建项目A时,都会优先去远程仓库查看是否有最新的版本,这就是和正式版本的不同之处。

如果有则下载下来使用。即使本地仓库中已经有了test-1.4.1-SNAPSHOT.jar,它也会尝试去远程仓库中查看同名的jar是否是最新的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值