maven-metadata.xml使用

2023-11-06

最近在开发过程中,发现工程中的一些包有问题,主要分为以下两种:

1、最新包(版本号未变,只是被更新了)少了一个方法

2、jar包被更新了,但是无法更新最新的包下来

首先先确定一下更新包会导致更新哪些文件?下面都以a-1.0.1-snapshot.jar包为例

当你更新了a-snapshot.jar的内容,并上传到maven服务器时,会更新一个元数据文件maven-metadata.xml,这个文件内容类似如下

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
          <groupId>com.my.testu</groupId>
          <artifactId>a</artifactId>
          <version>1.0.1-SNAPSHOT</version>
          <versioning>
    <!--当前版本下的最新快照信息-->
    <snapshot>
        <!--快照的时间戳-->
        <timestamp>20160909.081828</timestamp>
        <!--构件号-->
        <buildNumber>34</buildNumber>
      </snapshot>
    <!--metadata文件被更新的时间-->
    <lastUpdated>20160909081828</lastUpdated>
    <snapshotVersions>
      <snapshotVersion>
          <extension>jar</extension>
          <!-- 这个就是最新的jar包前缀-->
          <value>1.0.1-20160909.081828-34</value>
          <updated>20160909081828</updated>
        </snapshotVersion>
      <snapshotVersion>
          <extension>pom</extension>
          <value>1.0.1-20160909.081828-34</value>
          <updated>20160909081828</updated>
        </snapshotVersion>
  </versioning>
</metadata>

这个文件是很重要的,你的每次提交都会更新这个文件,当从maven下载jar包时,也会根据这个文件进行jar包的查找。若这时你去更新jar包,会下载最新包a-1.0.1-20160909.081828-24.jar,下载到本地后会复制一份重命名为a-1.0.1-snapshot.jar。

对于刚才说的第二个问题,就是因为maven-metadata.xml文件中的timestamp和updated不一致,导致找不到最新包,一般可能会报错Missing artifact

从现在看,想解决这两个问题,就是需要制定相同版本号下某个更新之后的jar包,并不一定是最新包。

既然maven-metadata.xml文件在maven服务器上可以指定下载哪个jar包,那么本地是否也可以指定呢?答案是肯定的,本地jar包一般到在.m2/repository路径下,在jar包所在的目录下一般会存在maven-metadata.xml这个文件,可以复制一份重命名为maven-metadata-local.xml。

 maven在build后会自动去Downloading 这个maven-metadata.xml文件,这个文件可以看作版本信息,作为一个版本比对。 在咱们使用maven更新工程的jar包时,其实maven是会比较服务器上的maven-metadata.xml和本地的maven-metadata-local.xml中的lastUpdated时间戳值,哪个值更大,就以哪个文件为准。这里需要注意的是,若是maven-metadata-local.xml文件的值大,这时候就中止下载了,直接使用本地的jar包,所以你得自己准备好自己想用的jar包。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven-metadata.xml使用 的相关文章

随机推荐

  • 【踩坑】AES256解密失败,jasypt解密失败 最简单解决办法(本地环境)

    背景 最近被拉去一个新项目组 他们用的jasypt加密方式为数据库信息加密 我拉取代码后一跑 果然报错了 Unable to decrypt ENC xxxx 在试了n中方法 包括 创建新项目使用jasypt复现 写demo直接用jasyp
  • 给你们讲个笑话——低代码会取代程序员

    今天是正经男 我们严肃讨论一下一直以来争吵不休的取代问题 低代码开发平台 低代码技术会取代开发人员么 一 背景 低代码开发平台的普及 让很多公司对快速生成应用抱有很大期望 甚至有人认为 低代码开发平台未来会 干掉 开发者 这是真的吗 好久没
  • 压缩感知入门

    学习资料 网站http dsp rice edu cs 具有相关大量详细介绍的论文
  • idea 编译和构建 Java Web 项目后,没有生成 target 文件夹,且生成的 out 文件夹中没有 class 文件

    问题 在用 idea 编译和构建 Java Web 项目的时候 项目的目录中没有 target文件夹 生成的 out 文件夹中 没有 class 文件 办法 出现这种情况 很可能是因为未加载的模块出现在了 iml 文件中 导致生成 tage
  • Unity Animation -- 导入动画

    尽管Unity中的动画工具已经比较强大了 但对于非常复杂的或很长的动画 通常是由外部DCC创建 特别是对于角色动画来说 需要在动画过程中进行复杂的控制 因此我们通常需要将外部制作的动画导入到Unity中 动画能被共享吗 对于复杂的动画 制作
  • 阿里云-对象存储OSS

    大家好 我是 码赛客1024 今天我们一起来学习阿里云的对象存储服务OSS 一 介绍 阿里云对象存储OSS Object Storage Service 是一款海量 安全 低成本 高可靠的云存储服务 提供99 9999999999 12个9
  • 树的高度和深度

    用到树的数据结构时 经常会考虑树的高度和深度 但是lz总是搞混了 总虽然比较简单 就是个定义 记住就行了 但是因为长时间总是弄错 所以写一篇博文 加深一下印象 1 树的深度 树的深度可以这样理解 计算一个节点的深度 从根节点算起 记住从1开
  • LeetCode 之 Search for a Range

    题目链接 Search for a Range 对于一个按照升序排序的整数数组 找到给定目标值的开始位置和结束位置 且时间复杂度为O log n 如果在数组中找不到目标值 则返回 1 1 例如 数组为 5 7 7 8 8 10 和目标值8
  • PyTorch搭建LSTM实现时间序列预测(负荷预测)

    目录 I 前言 II 数据处理 III LSTM模型 IV 训练 V 测试 VI 源码及数据 I 前言 在上一篇文章深入理解PyTorch中LSTM的输入和输出 从input输入到Linear输出 中 我详细地解释了如何利用PyTorch来
  • qt中复制文件的功能

    1 利用qt来复制文件 首先新建个工程文件 拖入按钮 复制文件 2 需要引入的头文件如下 include
  • 六月学习记录

    六月学习记录 6 1 Android消息传递之Handler消息机制 four articles http www cnblogs com whoislcj p 5590615 html 6 2 代码审查工具phabricator 6 4
  • 7 Linux 内核移植

    一 编译 ST 的 Linux 系统 1 压缩源码 首先先下载 ST 官方源码 之前章节已经下载过了 直接输入以下命令 cd linux atk mpl stm32mp1 openstlinux 5 4 dunfell mp1 20 06
  • pycharm 2023.1.2 去掉版本控制

    pycharm 2023 1 2 去掉版本控制
  • 优秀程序员应该具备的12种能力

    1 编程语言能力 不用多说 作为合格的计算机程序员 精通一门语言是必须的 这种精通 不是说看了一本编程宝典 抄了几个程序就能说精通的 要靠长时间的积累 2 编码能力 我曾经看很多程序员写的代码 在同一个jsp或者java源文件里 出现了三种
  • WinForm控件Chart的图表类型

    将就看 后期再加目录导航2020 10 23 折线图 折线图通常使用一条线来连接一系列不同的数据点 这样的直线是直线 样条曲线或阶梯 折线图更简单 因此还可以使您可视化多个系列而不会像条形图那样重叠 以下是折线图的不同类型 折线图 折线图使
  • C\C++各种变量存放区域(代码、数据、堆、栈)

    C C 各种变量存放区域 代码 数据 堆 栈 文章目录 C C 各种变量存放区域 代码 数据 堆 栈 变量 数据 变量 数据存放区域 练习 请说明下面的指针分别指向什么位置 BSS Block Started by Symbol 区 为什么
  • numpy实现卷积两种方法

    暂时针对二维卷积 方法1 按定义计算 def numpy conv inputs myfilter h ori w ori inputs shape h k w k myfilter shape h new w new h ori h k
  • 如何控制小程序的tabBar的显示和隐藏

    1 使用wx hideTabBar 方法隐藏tabBar 2 使用wx showTabBar 方法显示tabBar 参考文档
  • 适配器模式代码示例

    package com example shipeiqi public interface ThreeElectricOutlet 用来刻画三相插座 public abstract void connectElectricCurrent p
  • maven-metadata.xml使用

    最近在开发过程中 发现工程中的一些包有问题 主要分为以下两种 1 最新包 版本号未变 只是被更新了 少了一个方法 2 jar包被更新了 但是无法更新最新的包下来 首先先确定一下更新包会导致更新哪些文件 下面都以a 1 0 1 snapsho