Maven是怎么判断包在本地仓库和远程仓库哪个是新的()
背景
【Maven是怎么判断包在本地仓库和远程仓库哪个是新的()】这个问题是我现在才注意到的,因为之前使用maven都是在本地打包下载。用到的依赖包也都是发布的稳定版本,现在用到deploy了才有这个疑惑。我将一个包打包到远程仓库,其他项目总是能正确下载最新的,Maven是怎么判断本地仓库和远程仓库哪个是最新的呢?
猜想
是用提交时间判断么?还是根据版本号判断的?
类型
maven对构件的更新判断基本上是两种,一种是稳定版本,一种是maven特有的SNAPSHOT版本。
解释
1、稳定版本很好判断,直接根据maven构件的坐标体系就能够获得。先从本地仓库中找,如果本地仓库没有,就从pom.xml和setting.xml配置的远程仓库来找。
2、SNAPSHOT版本的判断比较麻烦,基本步骤如下:
- 假设我在我自己的电脑上使用 “mvn install” 构建了“com.mycompany.demo:test:1.0-SNAPSHOT”,那么Maven会在本地仓库对应的位置生成maven-metadata-local.xml文件。
- 某一天,我需要构建一个依赖于test的项目,于是我运行了mvn package来打包。
- 从公司的Maven服务器上下载maven-metadata.xml,重命名为“maven-metadata-
.xml”,并保存到本地仓库相应目录。 - 比较maven-metadata-local.xml与maven-metadata-
.xml中的lastUpdated时间戳的值,比较哪一个时间戳比较大。
推荐阅读
- 热闹中的孤独
- 我要做大厨
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 爱就是希望你好好活着
- 太平之莲
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 知识
- 七年之痒之后
- 叙述作文
- 时间老了