2012-06-24 12 views
10

मैं एक परियोजना का निर्माण कर रहा हूं, जो कई (कभी-कभी असंबंधित) मॉड्यूल और कुछ गैर मानक जावा मॉड्यूल (एएनटी के साथ बनाया गया) से बना है।मेवेन तैनाती: अगर आर्टिफैक्ट पहले से मौजूद है तो भी तैनाती को मजबूर करना

प्रत्येक मेवेन मॉड्यूल को पूरा होने पर रिलीज रिपोजिटरी में तैनात किया जाता है।

यदि निर्माण मध्य में विफल रहता है, तो मेरे पास पहले से ही तैनात कुछ मॉड्यूल हो सकते हैं, इसलिए यदि मैं पुनर्निर्माण करने का प्रयास करता हूं, तो तैनात करने का नया प्रयास विफल हो जाएगा क्योंकि कलाकृतियों को पहले से ही तैनात किया गया है।

क्या तैनाती करने से पहले तैनाती आर्टिफैक्ट को हटा देना संभव है?

+0

एमवीएन रिलीज का प्रयास करें: रोलबैक – om39a

+0

तैनाती क्यों विफल हो जाएगी? यदि आप एक ही संस्करण के साथ आर्टिफैक्ट तैनात करते हैं, तो यह केवल मौजूदा एक को ओवरराइट करेगा। –

+3

एंड्रयू - AFAIK, यदि आप मौजूदा आर्टिफैक्ट को फिर से तैनात करने का प्रयास करते हैं, तो आप असफल हो जाएंगे। –

उत्तर

8

ऐसा लगता है कि मिडलवेयर व्यवस्थापक ने आपके रिमोट रेपो इंस्टेंस (नेक्सस या आर्टिफैक्ट्री या जो कुछ भी) को आर्टिफैक्ट पुनर्वितरण की अनुमति नहीं दी है, और @khmarbaise कहते हैं कि इसके लिए अच्छे कारण हैं। नेक्सस को किसी विशेष भूमिका में या आर्टिफैक्ट हटाना विशेषाधिकारों के साथ आर्टिफैक्ट हटाने की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है। यदि आपके व्यवस्थापक ने इसे इस तरह से स्थापित किया है तो शायद आप हटाए गए विशेषाधिकार का अनुरोध कर सकते हैं और अपमानजनक कलाकृतियों को हटा सकते हैं। या, शायद नेक्सस व्यवस्थापक आपके लिए ऐसा करने के लिए सहमत होगा। रिलीज पर

  1. आप release प्लगइन का उपयोग कर रहे हैं, तो एक सूखी रन कर (-DdryRun=true:

    यदि इनमें से कोई भी संभव है, यहाँ कुछ बातें भविष्य में ऐसा होने से रखने हो सकता है की कोशिश कर रहे हैं : कमांड लाइन तैयार करें) पहले। मावेन को एससीएम के बिना किसी भी त्रुटि की रिपोर्ट करनी चाहिए।

  2. पहले परियोजनाओं के समूह पर mvn install चलाने का प्रयास करें। यह आपके स्थानीय रेपो में कलाकृतियों को स्थापित करेगा, रिमोट नहीं। यदि कोई समस्या है तो आप अपने स्थानीय रेपो से कलाकृतियों को फटकार सकते हैं और स्क्रैच से शुरू कर सकते हैं, जब तक कि आप पूर्ण निर्माण नहीं कर लेते।
  3. यदि आप बहु-मॉड्यूल बिल्ड चला रहे हैं, तो command line options हैं जो किसी विशेष प्रोजेक्ट से आगे बढ़ने वाले मेवेन को फिर से शुरू करने की अनुमति देते हैं।
  4. मेवेन कमांड लाइन पर -Dmaven.deploy.skip=true परिभाषित करें। यह सुझाव # 2 के समान है, सिवाय इसके कि मेवेन वास्तव में & लोड करेगा deploy plugin कॉन्फ़िगर करें, यह रिमोट रेपो पर वास्तविक तैनाती नहीं करेगा। एक बार सबकुछ काम करता है, तो छोड़ें संपत्ति को हटा दें।
+0

सभी अच्छे सुझाव। मुझे लगता है कि मैं विकल्प 4 या इसी तरह के लिए जाऊंगा ... Thx! –

+0

मुझे एक ही समस्या है, जब तक मुझे 502 (प्रॉक्सी त्रुटि) नहीं मिल जाता तब तक सब ठीक हो गया, मुझे लगता है कि मेरा यूनी सर्वर सोचा था कि मेरा कनेक्शन एक खतरा है। अब मुझे 400 (खराब अनुरोध) मिलता है क्योंकि कलाकृतियों पहले से ही नेक्सस सर्वर पर हैं। क्या रिलीज को फिर से शुरू करने का कोई तरीका है: प्रदर्शन करें? मैं कलाकृतियों को हटा सकता हूं लेकिन यह नेक्सस नियंत्रण कक्ष में बहुत काम है। ऐसा लगता है कि मुझे हाथ से बहु-मॉड्यूल प्रोजेक्ट के प्रत्येक संस्करण उप-फ़ोल्डर को हटाना होगा। मैं अगली बार यूनी नेटवर्क के भीतर से अपलोड करने की कोशिश करूंगा, हालांकि! – DarthB

2

संभव विकल्प वृद्धि कर दी गई;)

पैरामीटर deployAtEnd (अधिक जानकारी का उपयोग करें: here)। इस पैरामीटर के साथ कलाकृतियों को केवल तैनात किया जाता है, यदि सभी कलाकृतियों को सफलतापूर्वक बनाया गया था।

4

मुझे पता है कि यह देर हो सकती है, लेकिन नेक्सस में एक विकल्प है जहां कलाकृतियों की पुनर्वितरण की अनुमति मिलती है।

enter image description here

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

+0

यह एक अच्छा विकल्प है, लेकिन मुझे केवल मेरे निर्माण से ऐसी क्षमता में दिलचस्पी है, और किसी को रिलीज़ किए गए आर्टिफैक्ट को फिर से तैनात करने की अनुमति नहीं है। क्या मैं इसे बिल्ड समय पर सक्षम कर सकता हूं और निर्माण पूरा होने पर अक्षम कर सकता हूं? –

+0

ऐसा नहीं लगता कि यह संभव है क्योंकि कौन सा निर्णय लेता है कि आर्टिफैक्ट को फिर से तैनात किया जा सकता है, सर्वर नहीं है, क्लाइंट नहीं – leozin

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