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-<RepositoryID>.xml”,并保存到本地仓库相应目录。
  • 比较maven-metadata-local.xml与maven-metadata-<RepositoryID>.xml中的lastUpdated时间戳的值,比较哪一个时间戳比较大。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。 Maven在某个统一的位置存储所有项目的...
    三也视界阅读 2,323评论 0 4
  • 五. 仓库 在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为 构件。Maven在某个统一的位置存...
    wind_sky阅读 1,575评论 0 0
  • 在Maven世界中,依赖、插件、项目构建完成后输出的jar包都可以看作是一个构件,任何一个构件都有一组坐标唯一标识...
    SonyaBaby阅读 714评论 0 0
  • 目前在看nexus私服章节的知识时需要用到仓库与镜像的知识,正好通过简书把仓库和镜像章节的笔记整理一下 仓库 ma...
    小炼君阅读 1,420评论 0 48
  • Maven的基本了解 什么是Maven? Maven就是Apache下的一个开源项目。它是用纯java开发的。是一...
    Bcome阅读 3,147评论 0 7

友情链接更多精彩内容