Sonatype Nexus REST Api获取最新版本

Gio*_*gio 20 rest build repository nexus sonatype

我怎样才能使用Sonatype REST Api来获取具有最高版本(最新时间构建)的构建?

http://MY_REPOSITORY/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=ARTIFACT_VERSION
Run Code Online (Sandbox Code Playgroud)

将构建版本作为ARTIFACT_VERSION工作传递.传递v=LATESTv=latest不返回最新版本.

Ido*_*.Co 29

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

工件的版本(必需)也支持解析"LATEST","RELEASE"和快照版本("1.0-SNAPSHOT").

所以我认为你应该使用其中一个(你必须提供repositoryId和groupId),例如:

http://MY_REPOSITORY/nexus/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&v=LATEST
Run Code Online (Sandbox Code Playgroud)

  • 使用时要小心:如果最新版本已在元数据中设置为固定值(在"重建元数据"命中时,会发生Sonatype Nexus),您可能会获得旧版本的工件而不是最新版本,如这里解释:http://articles.javatalks.ru/articles/32 (2认同)

Ste*_*bak 18

我遇到了同样的问题并使用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}"
Run Code Online (Sandbox Code Playgroud)


Rez*_*imi 5

我有 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>
Run Code Online (Sandbox Code Playgroud)

从 maven-metadata.xml 内最新的 XML 标签中提取:

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"
Run Code Online (Sandbox Code Playgroud)

从 maven-metadata.xml 内的版本 XML 标记中提取:

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"
Run Code Online (Sandbox Code Playgroud)

截至 2016 年 9 月 14 日,这两个命令的结果是:

5.3.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)