How to rebuild maven-metadata.xml in Artifactory?
The accepted answer talks about Artifactory REST API solution, which indeed is the correct solution. But, due to proxy configured in my organization, it did not work for me. Also, I had to specify basic authentication details. So, posting the complete command that worked for me :-
curl -x http://{proxy_host}:{proxy_port} -kLu {username}:{password} -X POST https://{artifactory-link}/artifactory/api/maven/calculateMetadata/{repository-name}/{location}
This is the documentation of the REST API.
I'm not sure if this is possible in the UI, but you can do it using the REST API. Try posting a request using curl
:
curl -v -X POST http://artifactory/artifactory/api/maven/calculateMetadata/my-repository/com/foo/bar
They decided to call it "calculate metadata" instead of "rebuild metadata" which is not very suitable IMHO.
We are using artifactory 4.4.2
and I came here since the maven-metadata.xml
files were missing from folders in our artifactory where we had deployed war files manually using the REST API.
The important thing to note is that calculateMetadata
will not do anything if there are no pom.xml
files in place! (source)
Therefore, after we deployed com/company/project/art/1.0/art-1.0.war
, we needed to make a "blank" art-1.0.pom
and deploy it to the correct place.
Here's an example of a blank 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>
Now, the second thing we notice - once you deploy art-1.0.pom
the maven metadata is calculcated automatically (at least, for a local repo with default maven2 layout).
Therefore we didnt need to call calculateMetadata
via REST api at all - it seems to be automatic whenever you upload a pom.