簡體   English   中英

Sonatype Nexus REST Api獲取最新版本

[英]Sonatype Nexus REST Api fetch latest build version

我怎樣才能使用Sonatype REST Api來獲取具有最高版本(最新時間構建)的構建?

http://MY_REPOSITORY/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=ARTIFACT_VERSION

將構建版本作為ARTIFACT_VERSION傳遞有效。 傳遞v=LATESTv=latest不會返回最新版本。

沒有記錄/ 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

我遇到了同樣的問題並使用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}"

Lucene搜索API還允許關鍵字搜索版本:

http://<nexus_repository>/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>

從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"

從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"

截至2016年9月14日,這兩個命令的結果是:

5.3.0-SNAPSHOT

在嘗試使用LATEST版本的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM