Sonatype Nexus REST Api获取最新构建版本

Sonatype Nexus REST Api获取最新构建版本,rest,build,repository,nexus,sonatype,Rest,Build,Repository,Nexus,Sonatype,如何使用Sonatype REST Api获取具有最高版本(最新临时版本)的构建 将构建版本作为ARTIFACT\u version传递是有效的。传递v=LATEST或v=LATEST不会返回最新版本。没有记录到/service/local/lucene/search support“LATEST”作为版本参数[] OSS rest api文档声明/service/local/artifact/maven[](获取工件pom文件)和/service/local/artifact/maven/co

如何使用Sonatype REST Api获取具有最高版本(最新临时版本)的构建


将构建版本作为
ARTIFACT\u version
传递是有效的。传递
v=LATEST
v=LATEST
不会返回最新版本。

没有记录到/service/local/lucene/search support“LATEST”作为版本参数[] OSS rest api文档声明
/service/local/artifact/maven
[](获取工件pom文件)和
/service/local/artifact/maven/content
[](获取实际文件内容)确实支持它:

工件版本(必需)支持解析“最新”, “发布”和快照版本(“1.0-snapshot”)

因此,我认为您应该使用其中一个(您还必须向它们提供repositoryId和groupId) 例如:

http://MY_REPOSITORY/nexus/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&v=LATEST

我遇到了同样的问题,并使用lucene搜索api解决了这个问题:

if [[ "${REPO}" == "snapshots" ]]; then
  version=$( curl --silent "http://${HOST}/nexus/service/local/lucene/search?g=${GROUP_ID}&a=${ARTIFACT}" | sed -n 's|<latestSnapshot>\(.*\)</latestSnapshot>|\1|p' | sed -e 's/^[ \t]*//' | tail -1 )
else
  version=$( curl --silent "http://${HOST}/nexus/service/local/lucene/search?g=${GROUP_ID}&a=${ARTIFACT}" | sed -n 's|<latestRelease>\(.*\)</latestRelease>|\1|p' | sed -e 's/^[ \t]*//' | tail -1 )
fi

curl -o ~/${ARTIFACT}-${VERSION}.zip -L -#  "http://${HOST}/nexus/service/local/artifact/maven/redirect?r=${REPO}&g=${GROUP_ID}&a=${ARTIFACT}&e=zip&v=${VERSION}"
if[[“${REPO}”==“快照”];然后
version=$(curl--silent“http://${HOST}/nexus/service/local/lucene/search?g=${GROUP_ID}&a=${ARTIFACT}”| sed-n's | \(.*)p'| sed-e's/^[\t]*/'| tail-1)
其他的
version=$(curl--silent“http://${HOST}/nexus/service/local/lucene/search?g=${GROUP_ID}&a=${ARTIFACT}”| sed-n's | \(.*)p'| sed-e's/^[\t]*/'| tail-1)
fi
curl-o~/${ARTIFACT}-${VERSION}.zip-L-#“http://${HOST}/nexus/service/local/ARTIFACT/maven/redirect?r=${REPO}&g=${GROUP_ID}&a=${ARTIFACT}&e=zip&v=${VERSION}”

Lucene搜索API还允许对版本进行关键字搜索:

http://<nexus_repository>/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=1.0.*
http:///nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=1.0.*

我有Linux操作系统,但无法访问REST API,因此我使用以下命令从Nexus获取最新版本的快照:

WSO2存储库中的快照maven-metadata.xml示例:

$ curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml"
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>org.wso2.is</groupId>
  <artifactId>wso2is</artifactId>
  <versioning>
    <latest>5.3.0-SNAPSHOT</latest>
    <release></release>
    <versions>
      <version>5.1.0-SNAPSHOT</version>
      <version>5.2.0-SNAPSHOT</version>
      <version>5.3.0-SNAPSHOT</version>
    </versions>
    <lastUpdated>20160914062755</lastUpdated>
  </versioning>
</metadata>

在使用
最新版本尝试REST服务(并发现)之后,我创建了一行Linux命令,用于解析
metadata.xml
文件:

wget -O - -o /dev/null https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' | sort --version-sort -r| head -n 1

wget-O--O/dev/nullhttps://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml |grep-Po'(?您可能喜欢使用下面steinim建议的&e=war或&e=jar(顺便说一句,他的解决方案对我不起作用)的可能重复项。使用时要小心:如果元数据中的最新版本已设置为固定值(在Sonatype Nexus上,点击“重建元数据”时发生),您可以获得旧版本的工件,而不是最新版本,如下所述:如果您的工件不是jar,请添加
e
参数,例如:
http://MY_REPOSITORY/nexus/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&v=LATEST&e=zip
确实,它对nexus 3不起作用。您还有其他解决方案吗这个解决方案对我不起作用。我尝试了这个,我得到了应该匹配的和工件:
curl-u admin:admin123-L“http://127.0.0.1:8081/nexus/service/local/artifact/maven/content?r=maven-group&g=xmlapi&a=art&v=LATEST“
但我得到了一个404错误…我建议使用带有--xpath标记的xmllint而不是“grep”来代替“grep”我建议使用带有--xpath标志的xmllint
curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" | \
grep "<latest>.*</latest>" | \
sed -e "s#\(.*\)\(<latest>\)\(.*\)\(</latest>\)\(.*\)#\3#g"
curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" | \
grep "<version>.*</version>" | \
sort | uniq | tail -n1 | \
sed -e "s#\(.*\)\(<version>\)\(.*\)\(</version>\)\(.*\)#\3#g"
5.3.0-SNAPSHOT
wget -O - -o /dev/null https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' | sort --version-sort -r| head -n 1