我们正在使用 Artifactory3.9.2
并且必须合并两个存储库的部分(通过复制工件),它们具有相同的(SNAPSHOT
-versioned)工件。这搞砸了maven-metadata.xml
。在 Nexus 中,可以简单地为该工件重建元数据,并让存储库管理器为您整理内容。我似乎找不到有关如何使用 Artifactory 执行此操作的任何链接/说明。有人可以告诉我我该怎么做吗?
3 回答
我不确定这在 UI 中是否可行,但您可以使用REST API来实现。尝试使用以下方式发布请求curl
:
curl -v -X POST http://artifactory/artifactory/api/maven/calculateMetadata/my-repository/com/foo/bar
他们决定将其称为“计算元数据”而不是“重建元数据”,这不太适合恕我直言。
我们正在使用工件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>
现在,我们注意到的第二件事 - 一旦您部署art-1.0.pom
了 maven 元数据,就会自动计算(至少对于具有默认 maven2 布局的本地 repo)。
因此,我们calculateMetadata
根本不需要通过 REST api 调用 - 每当您上传 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的文档。