“Mvan क्लीन पैकेज” और “mvan clean install” अलग कैसे हैं?


277

वास्तव में mvn clean packageऔर के बीच अंतर क्या हैं mvn clean install? जब मैं इन दोनों कमांडों को चलाता हूं, तो वे दोनों एक ही काम करते हैं।



3
एक पैकेज (इसे टार्गेट में बनाता है) और इंस्टाल पर (पैकेज और इसे आपके पास रिपॉजिटरी में रखता है) आपको बाद में करने की आवश्यकता है यदि आप इस संस्करण का उपयोग किसी अन्य मॉड्यूल में करना चाहते हैं।
पीटर लॉरी

3
शायद इसे फिर से खोल दिया जाए? इसका उत्तर देना पूरी तरह से संभव है और मुझे उत्तर देना मुश्किल नहीं लगा। इसके अलावा, अगर कोई मावेन के लिए बिल्कुल नया है, तो यह देखना आसान है कि दोनों चरण एक ही काम कैसे करते हैं। मैं इसे कम अस्पष्ट बनाने के प्रयास में संपादित करूँगा।
डैनियल कपलान

जवाबों:


371

खैर, दोनों साफ करेंगे। इसका मतलब है कि वे लक्ष्य फ़ोल्डर निकाल देंगे। असली सवाल यह है कि पैकेज और इंस्टॉल में क्या अंतर है?

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

installसंकलन और पैकेज करेगा, लेकिन यह पैकेज को आपके स्थानीय भंडार में भी रखेगा। यह अन्य परियोजनाओं को संदर्भित कर सकता है और इसे आपके स्थानीय भंडार से हड़प सकता है।

प्रलेखन


क्यों mvn पैकेज की तुलना में तेजी से स्थापित है?
lostintranslation

9
@ शरदलोलानी क्योंकि बिल्ड वृद्धिशील हैं। mvn clean installसे तेज नहीं है mvn package
ऑरेंजडॉग

मेरे प्रोजेक्ट के लिए, mvan पैकेज असेंबली: सिंगल जो फैट जार बनाता है, एक mvan इंस्टॉल की तुलना में अधिक समय लेता है। क्या पैकेज और स्थापित दोनों समान वसा वाले जार का निर्माण करते हैं?
१०

1
@ राकेशयादव हाँ यह करते हैं
डैनियल कपलान

116

क्या साफ करता है (दोनों कमांड में आम) - पिछले बिल्ड द्वारा उत्पन्न सभी फाइलों को हटा देता है


कमांड पैकेज और इंस्टॉल के बीच के अंतर पर आते हुए , आपको सबसे पहले मावेन प्रोजेक्ट के जीवनचक्र को समझना होगा


ये मावेन में डिफ़ॉल्ट जीवन चक्र के चरण हैं

  • सत्यापित करें - मान्य करें परियोजना सही है और सभी आवश्यक जानकारी उपलब्ध है
  • संकलन - परियोजना के स्रोत कोड को संकलित करें
  • परीक्षण - एक उपयुक्त इकाई परीक्षण ढांचे का उपयोग करके संकलित स्रोत कोड का परीक्षण करें। इन परीक्षणों को कोड को पैक या तैनात करने की आवश्यकता नहीं होनी चाहिए
  • पैकेज - संकलित कोड लें और इसे अपने वितरण योग्य प्रारूप में पैकेज करें, जैसे कि JAR।
  • सत्यापित करें - गुणवत्ता मानदंडों को पूरा करने के लिए एकीकरण परीक्षणों के परिणामों पर कोई भी जाँच करें
  • स्थापित - स्थानीय रिपॉजिटरी में पैकेज स्थापित करें, स्थानीय रूप से अन्य परियोजनाओं में निर्भरता के रूप में उपयोग करने के लिए
  • तैनात - निर्माण के माहौल में किया जाता है, अंतिम पैकेज को अन्य डेवलपर्स और परियोजनाओं के साथ साझा करने के लिए दूरस्थ भंडार में कॉपी करता है।

मावेन कैसे काम करता है, यदि आप जीवनचक्र के किसी भी चरण के लिए कमांड चलाते हैं, तो यह कमांड को निष्पादित करने से पहले प्रत्येक डिफ़ॉल्ट जीवन चक्र चरण को क्रियान्वित करता है।

निष्पादन का आदेश

सत्यापित करें >> संकलित करें >> परीक्षण (वैकल्पिक) >> पैकेज >> सत्यापित करें >> इंस्टॉल करें >> तैनात करें

इसलिए जब आप कमांड मावन पैकेज चलाते हैं , तो यह पैकेज तक सभी जीवनचक्र चरणों के लिए कमांड चलाता है

मान्य करें >> संकलन करें >> परीक्षण (वैकल्पिक) >> पैकेज

और जैसा कि mvan install के लिए है , यह सभी जीवनचक्र चरणों के लिए कमांड चलाता है, जब तक कि इसमें पैकेज भी शामिल हो

मान्य करें >> संकलन करें >> परीक्षण (वैकल्पिक) >> पैकेज >> सत्यापित करें >> इंस्टॉल करें


तो, प्रभावी रूप से इसका क्या अर्थ है, कमांड स्थापित करें वह सब कुछ करता है जो पैकेज कमांड करता है और कुछ और (स्थानीय रूप से अन्य परियोजनाओं में निर्भरता के रूप में उपयोग के लिए स्थानीय रिपॉजिटरी में पैकेज स्थापित करें)

स्रोत: मावेन जीवनचक्र संदर्भ


1
इसे स्वीकृत उत्तर के रूप में चिह्नित किया जाना चाहिए। यह स्पष्ट रूप से परिभाषित करता है और ओपी को यह समझने में मदद करता है कि मावेन जीवनचक्र के अलग-अलग चरणों में और क्यों mvan स्थापित किया गया है, जिसमें mvan पैकेज शामिल है, लेकिन अन्य तरीके से नहीं।
जसमीत सिंह

1
संक्षेप में मावेन, महान!
कोडस्लेव

19

पैकेज पीओएम फ़ाइल के अनुसार जार / युद्ध उत्पन्न करेगा। स्थापित अन्य निर्भरता के लिए स्थानीय रिपॉजिटरी में यदि कोई है तो जनरेट जार फ़ाइल स्थापित करेगा।

पैकेज चरण के बाद स्थापित चरण आता है


पहले पैकेजिंग होगी, फिर वे पैकेज (जार / वार) स्थापित होंगे।
अब्दुल गफूर

1
" पैकेज चरण के बाद चरण स्थापित करें "। जिस तरह से यह वर्तमान में संपन्न है पीछे की ओर है। "द्वारा पीछा किया" का अर्थ है "के बाद"।
चार्ल्स वुड

11

पैकेज और इंस्टॉल मावेन बिल्ड लाइफसाइकल में विभिन्न चरण हैं। पैकेज चरण उस से पहले सभी चरणों को निष्पादित करेगा और यह एक जार के रूप में परियोजना की पैकेजिंग के साथ बंद हो जाएगा। इसी तरह स्थापित चरण सभी पूर्व चरणों को निष्पादित करेगा और अंत में अन्य आश्रित परियोजनाओं के लिए स्थानीय रूप से परियोजना को स्थापित करेगा।

मावेन बिल्ड लाइफ़साइकल को समझने के लिए कृपया निम्न लिंक https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html पर जाएं।


1
आपका क्या मतलब है "और अंत में अन्य निर्भर परियोजनाओं के लिए स्थानीय रूप से परियोजना स्थापित करें"
अरुण गौड़ा

2
@ अरुनगौड़ा इसका मतलब है। एम 2 जो मावेन की स्थापना पर आपके सिस्टम में बनाया गया है, उन परियोजनाओं के साथ जोड़ा जाएगा जो आप पैकेजिंग कर रहे हैं और निर्भरता के रूप में अन्य परियोजनाओं के लिए उपलब्ध होंगे।
जावा

एक तस्वीर एक 1000 शब्द है, किसी को भी एक आरेख मिला है?

@MrCholo स्थापित mvn अपने maven रेपो में जार / युद्ध डाल देंगे। जगह है जहाँ अपने सभी maven निर्भरता संग्रहीत है, आमतौर पर ~ / .m2
BRT

6

package पैक किया जाएगा jar या warआपके targetफ़ोल्डर में , हम इसे तब चेक कर सकते हैं, जब हम लक्ष्य फ़ोल्डर को खाली करते हैं (उपयोग करते हुए mvn clean) और फिर चलाते हैं mvn package
installवह सभी चीजें करेगा जो packageकरता है, इसके अलावा यह पैक jarया warस्थानीय भंडार में भी जोड़ देगा । हम आपके .m2फ़ोल्डर में जाँच करके इसकी पुष्टि कर सकते हैं ।

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