如何在 Artifactory 中重建 maven-metadata.xml?

How to rebuild maven-metadata.xml in Artifactory?

我们正在使用 Artifactory 3.9.2 并且必须合并两个存储库的部分(通过复制工件),这两个存储库具有相同的(SNAPSHOT-版本控制)工件。这搞砸了 maven-metadata.xml。在 Nexus 中,可以简单地重建这个工件的元数据,让存储库管理器为你整理东西。我似乎找不到任何关于如何使用 Artifactory 执行此操作的 links/explanations。有人可以告诉我该怎么做吗?

我不确定这在 UI 中是否可行,但您可以使用 REST API 来实现。尝试使用 curl:

发布请求
curl -v -X POST http://artifactory/artifactory/api/maven/calculateMetadata/my-repository/com/foo/bar

他们决定将其命名为 "calculate metadata" 而不是 "rebuild metadata" 恕我直言,这不太合适。

我们正在使用人工制品 4.4.2 我来这里是因为 maven-metadata.xml 文件从我们使用 REST [=33] 手动部署 war 文件的人工制品文件夹中丢失=].

需要注意的重要一点是,如果没有 pom.xml 文件,calculateMetadata 将不会执行任何操作! (source)

因此,我们在部署com/company/project/art/1.0/art-1.0.war之后,需要制作一个"blank"art-1.0.pom并部署到正确的地方。

这是一个空白 pom 的示例。

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.company.project</groupId>
  <artifactId>art</artifactId>
  <version>1.0</version>
  <description>POM was created from a script</description>
</project>

现在,我们注意到的第二件事 - 部署后 art-1.0.pom maven 元数据会自动计算(至少对于具有默认 maven2 布局的本地存储库)。

因此我们根本不需要通过 REST api 调用 calculateMetadata - 它似乎在您上传 pom 时自动调用。

接受的答案谈到了 Artifactory REST API 解决方案,这确实是正确的解决方案。但是,由于在我的组织中配置了代理,它对我不起作用。此外,我还必须指定基本的身份验证详细信息。所以,发布对我有用的完整命令:-

curl -x http://{proxy_host}:{proxy_port} -kLu {username}:{password} -X POST https://{artifactory-link}/artifactory/api/maven/calculateMetadata/{repository-name}/{location}

这是 REST API 的 the documentation