2013-02-09 68 views
17

उच्चतम संस्करण (नवीनतम अस्थायी निर्माण) के साथ निर्माण लाने के लिए मैं सोनाटाइप आरईएसटी एपीआई का उपयोग कैसे कर सकता हूं?सोनाटाइप नेक्सस आरईएसटी एपीआई नवीनतम बिल्ड संस्करण

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

ARTIFACT_VERSION काम करता है के रूप में एक बिल्ड संस्करण पासिंग। v=LATEST या v=latest पास करने से नवीनतम निर्माण वापस नहीं आता है।

+1

[नेक्सस बाकी एपीआई का उपयोग करना दिए गए ग्रुप/artficatid के लिए नवीनतम विरूपण साक्ष्य संस्करण प्राप्त करने के] (http के संभावित डुप्लिकेट: metadata.xml फ़ाइल पार्स करने के लिए लिनक्स कमांड // Stac koverflow.com/questions/7911620/using-the-nexus-rest-api-to-get-latest-artifact-version-for-given-groupid-artfic) –

उत्तर

28

यह दर्ज नहीं किया जाता है कि/सेवा/स्थानीय/Lucene/खोज समर्थन "नवीनतम" संस्करण पैरामीटर [link] ओएसएस बाकी API दस्तावेज़ में कहा गया है के रूप में है कि /service/local/artifact/maven [link] (विरूपण साक्ष्य पोम फ़ाइल प्राप्त करने के लिए) और /service/local/artifact/maven/content [ link] इसका समर्थन करता है (वास्तविक फ़ाइल सामग्री प्राप्त करने): विरूपण साक्ष्य (आवश्यक) भी "नवीनतम", "रिलीज़" और स्नैपशॉट संस्करणों ("1.0-स्नैपशॉट") का हल करने का समर्थन करता है के

संस्करण।

तो मुझे लगता है आप उनमें से एक उदाहरण के लिए (आप उन्हें repositoryId और ग्रुप के साथ भी प्रदान करना होगा) का उपयोग करना चाहिए: मैं एक ही समस्या थी और का उपयोग कर इस तरह इसे हल

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

आप और e = war या e = jar जैसे उपयोग करना पसंद कर सकते हैं steinim नीचे सुझाव दिया (बीटीडब्ल्यू उसका समाधान मेरे लिए काम नहीं कर रहा था) –

+0

साझा करने के लिए धन्यवाद। जहां से मैं repoId प्राप्त कर सकते हैं? – OverrockSTAR

+2

इसका उपयोग करते समय सावधान रहें: यदि नवीनतम संस्करण मेटाडेटा में एक निश्चित मान पर सेट किया गया है (सोनाटाइप नेक्सस पर ऐसा होता है जब "मेटाडाटा पुनर्निर्माण" मारा जाता है), तो आप नवीनतम के बजाय अपने आर्टिफैक्ट का पुराना संस्करण प्राप्त कर सकते हैं, जैसा कि यहां बताया गया है: http://articles.javatalks.ru/articles/32 – Giuseppe

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}" 
3

Lucene खोज एपीआई भी संस्करण के लिए कीवर्ड खोज अनुमति देते हैं:

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

मैं लिनक्स ओएस और मैं बाकी API तक पहुंच नहीं है, तो मैं निम्न कमांड नेक्सस से स्नैपशॉट का नवीनतम संस्करण प्राप्त करने के लिए इस्तेमाल:

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 अंदर नवीनतम एक्सएमएल टैग से निकाला जा रहा है:

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 अंदर संस्करण एक्सएमएल टैग से निकाला जा रहा है:

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" 

आज 14 सितं, 2016 तक आदेशों की दोनों का परिणाम है:

5.3.0-SNAPSHOT 
1

LATEST संस्करण के साथ बाकी सेवा की कोशिश कर रहा है (और it doesn't always work की खोज) के बाद मैं इस एक लाइनर बना दी

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 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^