Nexus: как загрузить последнюю минорную версию артефакта с помощью nexus rest api

Я хочу загрузить последнюю минорную версию артефакта с Nexus. Что-то вроде ниже:

http://local:8081/service/local/artifact/maven/content?g=com.mycompany&a=my-app&v=3.0.x

API Nexus rest не поддерживает такие версии, как 3.0.x или 3.0. *.

Я не могу использовать v = LATEST, потому что это может изменить основную версию.

Есть ли способ решить эту проблему.


person Ankur Lathi    schedule 10.02.2017    source источник


Ответы (2)


Предполагая, что вы используете Nexus 2.x, вы можете использовать

http://local:8081/service/local/lucene/search?repositoryId=someRep&a=my-app

чтобы получить ответ XML со списком соответствующих артефактов. Исходя из этого, вы можете сделать вывод о нужной вам версии.

person J Fabian Meier    schedule 10.02.2017
comment
Мне нужен URL-адрес, по которому можно загрузить артефакт. - person Ankur Lathi; 10.02.2017

Решил проблему, добавив groovy с помощью ant и создав макрос для получения последней минорной версии из нексуса.

<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpath="Ant-library/groovy-all-2.2.1.jar"/>

<macrodef name="fetchLatestMinor">
    <attribute name="group" default="NOT SET"/>
    <attribute name="artifact" default="NOT SET"/>
    <attribute name="majorVersion" default="NOT SET"/>
    <attribute name="repo" default="NOT SET"/>
    <attribute name="packaging" default="NOT SET"/>
    <attribute name="destination" default="NOT SET"/>
    <sequential>
        <property name="latestVersion" value=""/>
        <groovy>
            def url = "http://local:8081/nexus/service/local/lucene/search?a=@{artifact}&amp;v="+@{majorVersion}+".*-SNAPSHOT"
            def xml = url.toURL().text
            def root = new XmlParser().parseText(xml)
            properties["latestVersion"] = root.data.artifact[0].version.text()
            println root.data.artifact[0].version.text()
        </groovy>
        <get src="http://local:8081/nexus/service/local/artifact/maven/content?g=@{group}&amp;a=@{artifact}&amp;v=${latestVersion}&amp;r=@{repo}&amp;p=@{packaging}" dest="@{destination}"/>
    </sequential>
</macrodef>

<target name="run">
    <fetchLatestMinor group="<group_name>" artifact="<artifact_name>" majorVersion="2.0" repo="<repo_name>" packaging="war" destination="abc.war" />
</target>
person Ankur Lathi    schedule 11.02.2017