How to find the latest artifact version with Artifactory Query Language?
Asked Answered
C

1

6

Until now, I used the Artifactory REST API to determine the last version (last snapshot) of a maven artifact with groupId and artifactIid:

/api/search/latestVersion?g={groupid}&a={artifactid}

This gives me exactly a string with the highest/last available (snapshot) version of this artifact.

However, this is sometimes really slow and one recommendation was to use the Artifactory Query Language (AQL).

Unfortunately I have not yet been able to find out how to map this functionality in AQL.

Could someone give me a clue as to what a corresponding query in AQL could look like?

Thanks in advance!

Cockfight answered 10/12, 2017 at 18:28 Comment(0)
N
12

You can use AQL's SORT and LIMIT to retrieve your latest artifact, for example:

items.find(
{
            "repo":"my-repo"
    }
).sort({"$desc" : ["created"]}).limit(1)

You can find more examples here.

I would also recommend trying out the Jfrog CLI, which also supports Sorting, and might be easier to use.

Nothing answered 12/12, 2017 at 8:38 Comment(3)
But what is with the limitation to groupid/artifactid? How to translate that into the fields provided by AQL?Cockfight
you can use the "name" field with "$match" and incorparate wildcards in your query, for example: items.find( { "name":{"$match":"somename-1.1.1."} } ).sort({"$desc" : ["name"]}).limit(1)Nothing
items.find( { "name":{"$match":"somename-1.1.1.*"} } ).sort({"$desc" : ["name"]}).limit(1)Nothing

© 2022 - 2024 — McMap. All rights reserved.