Sonatype REST Apiを使用して、最新バージョン(最新の一時ビルド)のビルドをフェッチするにはどうすればよいですか?
http://MY_REPOSITORY/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=ARTIFACT_VERSION
ビルドバージョンをARTIFACT_VERSION
として渡すと機能します。 v=LATEST
またはv=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」)の解決もサポートします。
だから私はあなたがそれらの1つを使うべきだと思います(あなたは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}"
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
Lucene検索APIでは、バージョンのキーワード検索も可能です。
http://<nexus_repository>/nexus/service/local/lucene/search?a=ARTIFACT_NAME&v=1.0.*
RESTサービスをLATEST
バージョンで試してみた後(そして それが常に機能するとは限らない を発見した後))、この1行の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