maven release版本不更新原因分析
2017-09-05 18:13
1091 查看
问题
有个2.5.1版本的jar包在私服上已经存在,A机器修改代码,但是没有修改版本号,重新上传到私服后,B机器更新不下来,除非B机器删除本地maven仓库中的jar包才能更新下来。<!--B机器 pom.xml配置--> <dependency> <groupId>com.github.snakerflow</groupId> <artifactId>snaker-core</artifactId> <version>2.5.1</version> </dependency>
初次尝试
最初,以为是更新策略的问题,将release版本配置为总是更新,还是更新不下来。如下,<!--C:\Users\DELL\.m2\settings.xml--> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://central</url> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories> </profile>
解决
在《maven实战》P87一书中找到了更新原理。如果是release版本,首先从本地查找,如果有,则使用本地,否则从远程服务器下载。 因为,本地已存在,所以不会更新。所以,只有删除本地,才能更新到最新。
为了更新不再删除,改了jar的版本号,将jar包的版本号改为2.5.2-SNAPSHOT,同时修改依赖的版本号,就能下载到最新版本了。
拓展
RELEASE
如果版本号配置为RELEASE ,那么用本地MAVEN_REPOSITORY/groupid/artifactid/maven-metadata.xml,与服务器的maven-metadata.xml合并,会使用最大的release版本版本号。举例,这种情况就会使用最大release版本号2.5.2,而不是2.5.3-snapshot,因为2.5.3-snapshot是快照版本不是发布版本,应该尽量避免使用RELEASE,因为版本是不稳定的。
<dependency> <groupId>com.github.snakerflow</groupId> <artifactId>snaker-core</artifactId> <version>RELEASE</version> </dependency>
<!--本地服务器的maven-metadata.xml--> <?xml version="1.0" encoding="UTF-8"?> <metadata> <groupId>com.github.snakerflow</groupId> <artifactId>snaker-core</artifactId> <versioning> <release>2.5.1</release> <versions> <version>2.5.1</version> </versions> <lastUpdated>20170908072352</lastUpdated> </versioning> </metadata>
<!--远程服务器的maven-metadata.xml--> <metadata> <groupId>com.github.snakerflow</groupId> <artifactId>snaker-core</artifactId> <versioning> <release>2.5.1</release> <versions> <version>2.5.1</version> <version>2.5.2</version> <version>2.5.3-SNAPSHOT</version> </versions> <lastUpdated>20170905010758</lastUpdated> </versioning> </metadata>
SNAPSHOT
snapshot版本与release,略微不同,它比较的是lastUpdated,哪个新就下载哪个,所以如果版本号是x.x.x-SNAPSHOT,肯定会更新下来。LATEST
最新版本,则是发布版和快照中,最新的版本,所以,如果version配置为latest,则版本也不是稳定的。相关文章推荐
- maven项目中依赖的jar包更新后, 本地项目无法下载对应版本的原因之一
- Android版本更新不成功原因分析
- 关于maven版本管理 SNAPSHOT RELEASE(version)
- Release版本下pthread_mutex_t死锁分析
- Maven的Snapshot版本与Release版本
- Release版本不能运行的原因
- Red Hat Enterprise Linux AS release 4 下SSH无法使用无密码登陆的原因分析
- debug 版本正常 release版本出错的原因之一
- 【Maven】Snapshot和Release版本的区别
- 程序版本在线更新分析
- 关于debug版本OK,release版本crash的问题处理可能原因
- 调试版程序OK,release版本却崩溃的原因
- 为程序添加版本自动更新功能(转+详细分析)
- Maven中Snapshot版本与Release版本的区别
- DownloadManager(强制版本更新和源码分析)
- CI - Jenkins安装- maven release插件将一版本发布到仓库中时Return code is: 401, ReasonPhrase:Unauthorized
- (转) maven snapshot和release版本的区别
- mac brew maven更新版本
- gcc编译错误提示原因与分析(不断整理更新)
- 案例分析网站快照不更新及内页收录减少的原因