नेक्सस में एक विरूपण साक्ष्य को तैनात करते समय त्रुटि


102

नेक्सस सर्वर में अपने स्वयं के भंडार में एक विरूपण साक्ष्य को तैनात करते समय मुझे एक त्रुटि हो रही है: "कलाकृतियों को तैनात करने में विफल: विरूपण को स्थानांतरित नहीं कर सका" "फ़ाइल http: /// my_artifact को स्थानांतरित करने में विफल रहा। रिटर्न कोड है: 400"

मेरे पास नेक्सस एक कस्टम रिपॉजिटरी my_repo के साथ अगले मावेन स्थानीय कॉन्फ़िगरेशन के साथ चल रहा है:

settings.xml

<server>
    <id>my_repo</id>
    <username>user</username>
    <password>pass</password>
 </server>
 ...
 <mirror>
    <id>my_repo</id>
    <name>Repo Mirror</name>
    <url><my_url_to_my_repo></url>
    <mirrorOf>*</mirrorOf>
  </mirror>
  • उपयोगकर्ता को my_repo में लिखने / पढ़ने / लिखने की अनुमति है -

pom.xml

<distributionManagement>
        <repository>
            <id>my_repo</id>
            <name>my_repo</name>
            <url><my_url_to_my_repo></url>
            <layout>default</layout>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url><my_url_to_my_snapshot_repo></url>
        </snapshotRepository>
    </distributionManagement>

और फिर मैं निष्पादित करता हूं

mvn deploy

और त्रुटि प्राप्त करें। कोई उपाय?


2
HTTP 400 का अर्थ है "बुरा अनुरोध"। मैं अनुमान लगा रहा हूं कि एक URL गलत है।
मार्क ओ'कॉनर

मेरे लिए समस्या यह थी कि यह स्नैपशॉट संस्करण नहीं था।
मैवरॉयड

जवाबों:


156

कुछ चीजें जो मैं सोच सकता हूं:

  • उपयोगकर्ता क्रेडेंशियल्स गलत हैं
  • url सर्वर पर गलत है
  • उपयोगकर्ता के पास परिनियोजन भंडार तक पहुँच नहीं है
  • उपयोगकर्ता के पास विशिष्ट रिपॉजिटरी लक्ष्य तक पहुंच नहीं है
  • यदि यह रिलीज़ है तो विरूपण साक्ष्य के साथ पहले से ही तैनात है
  • संबंधित कलाकृतियों की तैनाती के लिए रिपॉजिटरी उपयुक्त नहीं है (जैसे स्नैपशॉट संस्करण के लिए रिलीज़ रेपो, होस्ट किए गए रिपॉजिटरी के बजाय प्रॉक्सी रेपो या समूह)

उन लोगों की जाँच करें और यदि आप अभी भी मुसीबत में हैं, तो यहाँ और अधिक विवरण प्रदान करें।


44
मैंने अपनी कलाकृतियों के संस्करण को स्नैपशॉट में बदल दिया और फिर तैनात किया और सब ठीक था। तब मुझे एहसास हुआ कि मैं एक नेक्सस समूह (एक नेक्सस रिपॉजिटरी नहीं) को तैनात करने की कोशिश कर रहा था, इसलिए मेरी समस्या का कारण था: 'मेरे नेक्सस रिपॉजिटरी के लिए यूआरएल गलत था'
एसिमिटल

5
महत्वपूर्ण: "विरूपण साक्ष्य पहले से ही उस संस्करण के साथ तैनात किया गया है अगर यह एक रिलीज (नहीं -SNAPSHOT संस्करण)"
भूषण

1
मेरा दिन सहेजा गया ... मैंने pom.xml में संस्करण से -SAPAPOT शब्द हटा दिया, इसीलिए इसका नेक्सस पर परिनियोजन करने में सक्षम नहीं है ... मैंने SNAPSHOT शब्द को वापस जोड़ा, और इसने काम किया ..
वेणुगोपाल

3
मेरे अनुभव में गलत क्रेडेंशियल्स के परिणामस्वरूप 401, 400 नहीं है। "-SNAPSHOT" के साथ संस्करण नाम की पुष्टि करना मेरे लिए समस्या को निर्धारित करता है।
मार्कस जूनियस ब्रूटस

1
आप बस अपने रिपॉजिटरी की तैनाती नीति को बदलकर redeploy
फुरकान

35

बस एक अलग उत्तर बनाने के लिए। उत्तर वास्तव में स्वीकृत उत्तर के लिए एक टिप्पणी में पाया जाता है।

के साथ समाप्त करने के लिए अपने आर्टिफैक्ट के संस्करण को बदलने का प्रयास करें -SNAPSHOT


2
नहीं, आप पूरे बिंदु को याद नहीं कर रहे हैं, टिप्पणी को ध्यान से पढ़ें इसमें उल्लेख किया गया है "इसलिए मेरी समस्या का कारण था: 'मेरे नेक्सस रिपॉजिटरी के लिए यूआरएल गलत था"। और 'रिटर्न कोड है: 400' का क्या मतलब है इसके बारे में कुछ विचार प्राप्त करें (इससे पहले कि आप जवाब के रूप में किसी की टिप्पणी की नकल करें)
kuhajeyan

13
अपनी खोज में इस पृष्ठ को हिट करने के बाद से मैं यहाँ टिप्पणी करना चाहता था। मैं एक ही 400 त्रुटि में भाग गया और क्या भगीजा ने कहा कि यहां कुंजी है (हालांकि मुझे उस समय इसका एहसास नहीं हुआ था), अगर स्नैपशॉट रिपॉजिटरी के लिए संस्करण को समाप्त करना आवश्यक है तो -SNAPSHOT। मेरा संस्करण 1.13.0.SNAPSHOT था और मुझे यह पता लगाने में एक घंटे का समय लगा कि इसे 1.13.0-SNAPSHOT होना चाहिए।
क्रेग

16

यदि आप प्रयास करते हैं तो 400 खराब अनुरोध लौटाए जाएंगे:

  1. एक स्नैपशॉट विरूपण साक्ष्य (या संस्करण) को समाप्त करें -SNAPSHOT में एक रिलीज़ रिपॉजिटरी में
  2. एक तैनात रिलीज विरूपण साक्ष्य (संस्करण नहीं में समाप्त होने वाले -SNAPSHOT ) एक करने के लिए स्नैपशॉट भंडार
  3. तैनात एक ही एक के संस्करण रिलीज एक करने के लिए एक बार से अधिक विरूपण साक्ष्य रिहाई भंडार

12

मेरे लिए समस्या का कारण -source.jars स्वीकृत उत्तर में एक कारण के रूप में उल्लेखित (maven-source-plugin) के साथ दो बार अपलोड हो रहा था। मेरे द्वारा भेजे गए उत्तर का पुनर्निर्देशन: मेवेन रिलीज़ प्लगइन विफल रहता है: दो बार तैनात होने वाली स्रोत कलाकृतियाँ


7

आज मुझे यह सटीक समस्या थी और समस्या यह थी कि जिस संस्करण को मैं जारी करने की कोशिश कर रहा था: प्रदर्शन नेक्सस रेपो में पहले से ही था।

मेरे मामले में रिलीज के पहले आह्वान के दौरान एक नेटवर्क डिस्कनेक्ट के कारण यह संभव था: प्रदर्शन। भले ही मैंने अपना कनेक्शन खो दिया हो, ऐसा लगता है कि रिलीज सफल रही।


7

नेक्सस को एक ही घटना में कि आपको SAME STABLE विरूपण साक्ष्य को फिर से तैयार करने की आवश्यकता है, यह डिफ़ॉल्ट रूप से विफल हो जाएगा। यदि आप इसे फिर से तैनात करने के उद्देश्य से नेक्सस (वेब ​​इंटरफेस के माध्यम से) से कलाकृतियों को हटाते हैं, तो तैनाती अभी भी विफल हो जाएगी, क्योंकि उदाहरण के लिए जार या पोम को हटाने से निर्देशिका में अभी भी अन्य फाइलें खाली नहीं होती हैं। आपको बॉक्स पर लॉग इन करना होगा और निर्देशिका को उसकी संपूर्णता में हटाना होगा।


2
बस इसे जोड़ने के लिए, यदि आपके पास सर्वर तक इंटरएक्टिव एक्सेस नहीं है (I NOT - इसका प्रबंधित बॉक्स), तो आप HTTP DELETE के साथ आपत्तिजनक विरूपण साक्ष्य को हटा सकते हैं। मैं इस उद्देश्य के लिए पोस्टमैन का उपयोग करता हूं
नाथन रसेल

मुझे यकीन नहीं है कि यह इसलिए है क्योंकि मैं S3 ब्लॉबस्टोर प्लगइन का उपयोग कर रहा हूं, लेकिन मुझे रेपो संरचना से मेल खाने वाली निर्देशिका संरचना दिखाई नहीं देती है। क्या पहचानने के लिए कुछ ट्रिक है जो डिलीट करना है? मेरी सभी फाइलें एक हैश के नाम से हैं। निर्देशिका प्रारूप के हैंcontent/vol-{01-43}/chap-{01-47}
मेजिकमैन

आप GAV प्रकार खोज से कलाकृतियों की तलाश के बजाय, रिपॉजिटरी से रिलीज़ डायरेक्टरी में नेविगेट करके एक रिलीज़ के लिए सभी फ़ाइलों को हटा सकते हैं। रिपॉजिटरी व्यू में, आप उस GAV की सभी फाइलों के लिए डिलीट एक्शन पाने के लिए डायरेक्टरी पर राइट-क्लिक कर सकते हैं।
क्रिश्चियन ट्रिम्बल

3

मुझे आज एक ही समस्या थी कि "रिटर्न कोड है: 400, ReasonPhrase: Bad Request।" जो "विरूपण साक्ष्य पहले से ही उस संस्करण के साथ तैनात किया गया है अगर यह एक रिलीज है" यहाँ लिंक विवरण के ऊपर उत्तर से समस्या है

अभी तक उल्लेख नहीं किया गया एक समाधान नेक्सस को एक रिलीज रिपॉजिटरी में फिर से तैनाती की अनुमति देने के लिए कॉन्फ़िगर करना है। शायद सबसे अच्छा अभ्यास नहीं है, क्योंकि यह एक कारण के लिए सेट है, फिर भी आप अपने नेक्सस रिपॉजिटरी "कॉन्फ़िगरेशन" में "एक्सेस सेटिंग्स" पर जा सकते हैं -टैब और "तैनाती की नीति" को "रेडिप्लॉय को अनुमति दें" सेट करें।


3
  • पैरेंट पोम एप्लिकेशन में ==> संस्करण ने टैग इस प्रकार दिया: xxx-SNAPSHOT

उदाहरण: 0.0.1-स्नैपशॉट

  • "-SAPAPSHOT": बहुत महत्वपूर्ण है

2

सुनिश्चित करें कि नेक्सस (रिलीज के रूप में) पहले से ही (कलाकृतियों और संस्करण) मौजूद नहीं है। उस मामले में खराब अनुरोध लौटाएं।


2

400 त्रुटि के लिए, रिपॉजिटरी "परिनियोजन नीति" आमतौर पर इसकी "अक्षम करें पुनर्निर्धारण" की जांच करें। अधिकांश समय आपका पुस्तकालय संस्करण पहले से ही है, इसीलिए आपको एक संदेश मिला "PUT put '' https: //yoururl/some.jar 'प्राप्त नहीं कर सका । सर्वर से प्राप्त स्थिति कोड 400: रिपॉजिटरी संपत्ति को अद्यतन करने की अनुमति नहीं देता है:" रिपॉजिटरी नाम "

तो, आपके पास इसे हल करने के लिए कुछ विकल्प हैं। 1- रिडाइपल को अनुमति दें 2- संस्करण को अपने रिपॉजिटरी से हटा दें जिसे आप अपलोड करने की कोशिश कर रहे हैं 3- संस्करण संख्या को बदलें


रिलीज रिपॉजिटरी के लिए पुनर्वितरण की अनुमति देना आमतौर पर एक अच्छा अभ्यास नहीं माना जाता है। बिना विचार किए ऐसा न करें।
इतापेक

1
@ Itaypk आप सही हैं यही कारण है कि मैंने कुछ अन्य सुझाव दिए हैं। मेरी राय में, संस्करण को बदलना बेहतर है।
फुरकान

1

यदि उपरोक्त उत्तर में से किसी ने भी काम किया है, तो आप सीधे (NEXUS स्क्रीन शॉट नीचे संलग्न) की ओर से नई कलाकृति बना सकते हैं।

  1. Login to nexusUI http: // your_URL: 8081 / nexus (उपयोगकर्ता नाम: व्यवस्थापक डिफ़ॉल्ट पासवर्ड: admin123 )
  2. Click repositories बाईं ओर फिर रेपो पर क्लिक करें, उदाहरण के लिए: रिलीज पर क्लिक करें।
  3. चुनें artifact Upload(अंतिम टैब)
  4. के GAV definitionरूप में चुनेंGAV Param - फिर अपने समूह, विरूपण साक्ष्य आईडी और संस्करण दर्ज करें।
  5. जार फ़ाइल चुनें।
  6. अपलोड विरूपण साक्ष्य पर क्लिक करें। बस !

अब आप अपनी परियोजना में गलियारे को जोड़ने में सक्षम होंगे। (नीचे स्क्रीनशॉट)

यहां छवि विवरण दर्ज करें


1

यह तब भी हो सकता है यदि आपके पास संस्करण के आसपास एक नामकरण नीति है, उस संस्करण को रोकना जिस पर आप तैनात करने का प्रयास कर रहे हैं। मेरे मामले में मैं एक संस्करण अपलोड करने की कोशिश कर रहा था (रेपो जारी करने के लिए)2.0.1 लेकिन बाद में पता चला कि हमारा सांठगांठ कॉन्फ़िगरेशन रिलीज के लिए पूरे नंबर के अलावा कुछ भी अनुमति नहीं देता है।

मैंने बाद में संस्करण के साथ प्रयास किया 2 किया और इसे सफलतापूर्वक तैनात किया।

त्रुटि संदेश निश्चित रूप से मदद नहीं करेगा:

Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]

एक बेहतर संदेश हो सकता था version 2.0.1 violates naming policy


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.