20

Sonatype REST Apiを使用して、最高バージョンのビルド(最新の一時ビルド)をフェッチするにはどうすればよいですか?

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

ビルドバージョンをARTIFACT_VERSION作品として渡す。合格v=LATESTまたはv=latest最新のビルドを返しません。

4

5 に答える 5

30

/ service / local / lucene / searchがバージョンパラメータとして「LATEST」をサポートしていることは文書化されていません[リンク]OSSのRESTAPIドキュメントには、/service/local/artifact/maven[リンク](アーティファクトpomファイルを取得するため)および/service/local/artifact/maven/content[リンク](実際のファイルコンテンツ)はそれをサポートします:

アーティファクトのバージョン(必須)「LATEST」、「RELEASE」、およびスナップショットバージョン(「1.0-SNAPSHOT」)の解決もサポートします。

したがって、たとえば、そのうちの1つを使用する必要があると思います(repositoryIdとgroupIdも指定する必要があります)。

http://MY_REPOSITORY/nexus/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&v=LATEST
于 2013-02-10T15:50:39.867 に答える
18

私は同じ問題を抱えていて、lucenesearchapiを使用して次のように解決しました。

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}"
于 2013-05-08T11:52:24.350 に答える
4

Lucene検索APIでは、バージョンのキーワード検索も可能です。

http://<nexus_repository>/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=1.0.*
于 2013-09-24T23:39:20.117 に答える
4

Linux OSを使用していて、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
于 2016-09-14T08:02:32.283 に答える
2

そのバージョンでRESTサービスを試した後(そしてそれが常に機能するとは限らないことLATESTを発見した後)、ファイルを解析するためのこのワンライナー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
于 2016-11-02T10:50:13.663 に答える