Nexus:如何使用 nexus rest api 下载最新的次要版本的工件
Nexus: How can I download latest minor version of artifact using nexus rest api
我想从 Nexus 下载 最新的次要 版本的工件。如下所示:
http://local:8081/service/local/artifact/maven/content?g=com.mycompany&a=my-app&v=3.0.x
Nexus rest api 不接受像 3.0.x 或 3.0.* 这样的版本。
I can't use v=LATEST because it might change the major version.
有什么办法可以解决这个问题
假设您使用 Nexus 2.x,您可以使用
http://local:8081/service/local/lucene/search?repositoryId=someRep&a=my-app
获得列出相关工件的 XML 响应。由此,您可以推断出您想要的版本。
通过添加 groovy 和 ant 解决了这个问题,并创建了一个宏来从 nexus 获取最新的次要版本。
<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}&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}&a=@{artifact}&v=${latestVersion}&r=@{repo}&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>
我想从 Nexus 下载 最新的次要 版本的工件。如下所示:
http://local:8081/service/local/artifact/maven/content?g=com.mycompany&a=my-app&v=3.0.x
Nexus rest api 不接受像 3.0.x 或 3.0.* 这样的版本。
I can't use v=LATEST because it might change the major version.
有什么办法可以解决这个问题
假设您使用 Nexus 2.x,您可以使用
http://local:8081/service/local/lucene/search?repositoryId=someRep&a=my-app
获得列出相关工件的 XML 响应。由此,您可以推断出您想要的版本。
通过添加 groovy 和 ant 解决了这个问题,并创建了一个宏来从 nexus 获取最新的次要版本。
<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}&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}&a=@{artifact}&v=${latestVersion}&r=@{repo}&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>