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

时间:2015-09-02 12:27:08

标签: maven artifactory maven-metadata

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

3 个答案:

答案 0 :(得分:14)

我不确定这是否可以在用户界面中使用,但您可以使用REST API进行此操作。尝试使用curl发布请求:

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

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

答案 1 :(得分:4)

我们正在使用artifactory 4.4.2,因为我们使用REST API手动部署war文件的文件中的文件夹中缺少maven-metadata.xml个文件,所以我来到这里。

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

因此,在我们部署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>

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

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

答案 2 :(得分:0)

被接受的答案是关于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