【问题标题】:How to get artifactory to update the maven-metadata.xml for a virtual repo?如何让工件更新虚拟仓库的 maven-metadata.xml?
【发布时间】:2014-04-24 20:05:26
【问题描述】:

长期阅读,第一次提问......

我有一个独立的网络(无法访问互联网)。它有一个具有虚拟 libs-snapshotlibs-release 存储库的工件服务器。在 libs-snapshot 下,有 4 个本地快照存储库。这样做的原因是我们从其他地方(未连接)获得了所有人工仓库的转储,并将其导入到这个网络。但是我们必须在那里修改快照工件的一个子集。因此,我们创建了另一个本地快照存储库,将其命名为 mine-snapshot-local(maven 2 存储库,设置为唯一,最大工件=1?),并将其添加到 库的顶部-快照虚拟。从理论上讲,这将允许我们修改我们需要的少量工件,部署到我们自己的存储库,本地开发人员会选择这些。但是我们仍然可以从其他非连接系统的定期转储中访问 99% 的其他工件。此外,我们可以从其他网络批量导入同时修改的 drop,而无需接触我们的独立网络存储库 (mine-snapshot-local)。我想我们正在“分支”工件存储库......

我意识到我们可能可以直接部署到一个导入的存储库中,但是下次我们从另一个网络获得转储时,所有那些自定义修改的工件都会消失......所以我真的很想得到如果可能,这种方法可以工作。

从我的本地 Eclipse 中,maven 插件将工件显式部署到 mine-snapshot-local 存储库,并且没有错误。我看到的问题是虚拟 libs-snapshot 的 maven-metadata.xml 没有更新。该文件的时间戳已更新,如果我使用 Web 浏览器浏览 libs-snapshot/whatever_package,我可以看到我新部署的工件,其时间戳比现有快照更新。但是 maven-metadata.xml 文件仍然包含指向“旧”快照的指针。

maven-metadata.xml 已在 mine-snapshot-local 存储库中成功更新,但好像 artifactory 没有为虚拟存储库正确地将所有元数据文件合并在一起。或者,更有可能的是,我错误地配置了一些东西,导致它以某种方式忽略我们的顶层本地 repo(但为什么快照 jar/pom 仍然出现在那里?)。

我们使用的是 artifactory 2.6.1(并且没有升级选项)。

我尝试了很多方法:将快照存​​储库设置为唯一、非唯一、部署程序、限制快照数量等。这些似乎都没有太大区别。

我认为可能存在问题的一件事是分配给快照的内部版本号。例如,在导入的仓库中,工件可能有一个一周前的时间戳,但内部版本号为 4355。在我的新仓库中,当我部署时,我有一个更新的时间戳,但内部版本号是 1(或比 4355 小得多的东西)。

我是不是通过尝试像这样拥有多个本地快照存储库来找出错误的树?看起来这应该没问题,但也许不是。

【问题讨论】:

    标签: maven artifactory maven-metadata


    【解决方案1】:

    您使用的是非常(但非常)旧版本的 Artifactory,可能是您遇到了一个早已不复存在的问题。正常行为应该是,如果您有 4 个 maven 存储库,并且您将新工件更新/部署到其中一个存储库中,则虚拟存储库应聚合所有列出的存储库中的元数据。

    只是为了验证一下,您提到您正在从 Eclipse 进行部署,您指的是 P2 吗?如果只是附带说明,Artifactory 将不会计算 P2 工件的元数据。

    【讨论】:

    • 好的,既然我已经回复了,我发现这是一个 3 年前的帖子,所以它可能不相关...... :)
    猜你喜欢
    • 2014-12-20
    • 2015-03-20
    • 2011-06-20
    • 2018-05-06
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多