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

car*_*ing 7 artifactory maven maven-metadata

我们正在使用Artifactory 3.9.2并且必须合并两个存储库的部分(通过复制工件),这些存储库具有相同的(SNAPSHOT-versioned)工件.这搞砸了maven-metadata.xml.在Nexus中,可以简单地重建此工件的元数据,并让存储库管理器为您排序.我似乎无法找到关于如何使用Artifactory执行此操作的任何链接/解释.有人可以告诉我怎么做到这一点?

tft*_*ftd 15

我不确定UI中是否可以实现这一点,但您可以使用REST API来实现.尝试使用curl以下方式发布请求

curl -v -X POST http://artifactory/artifactory/api/maven/calculateMetadata/my-repository/com/foo/bar
Run Code Online (Sandbox Code Playgroud)

他们决定将其称为"计算元数据"而不是"重建元数据",这不是非常适合恕我直言.

  • 好吧,我不一定会说这是错的,当你正在寻找一个与大多数人似乎使用的术语不同的术语时,很难找到文档. (2认同)

vik*_*eve 6

我们正在使用神器4.4.2,我来到这里是因为maven-metadata.xml我们使用 REST API 手动部署了战争文件的神器中的文件夹中缺少文件。

需要注意的重要一点是,calculateMetadata如果没有pom.xml文件到位,则不会做任何事情!(来源

因此,在我们部署之后com/company/project/art/1.0/art-1.0.war,我们需要做一个“空白”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>
Run Code Online (Sandbox Code Playgroud)

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

因此,我们calculateMetadata根本不需要通过 REST api调用- 每当您上传 pom.xml 时,它似乎都是自动的。


Yog*_*rni 5

接受的答案谈到了 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}
Run Code Online (Sandbox Code Playgroud)

这是REST API 的文档。