Mvn स्थापित या Mvn पैकेज


134

मैं मावेन के लिए नया हूं, मेरे जावा में एक वेब आधारित परियोजना है, जो मेरे मायक्लिप्स में मावेन कॉन्फ़िगर है।
अब अगर मैंने कोई जावा फाइल को संशोधित किया है तो क्या मुझे करने की आवश्यकता है Run as -> Mvn installया Mvn package?

जवाबों:


158

से http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

package: संकलित कोड लें और इसे अपने वितरण योग्य प्रारूप में पैकेज करें, जैसे कि JAR।

install: स्थानीय रिपोजिटरी में पैकेज स्थापित करें, स्थानीय रूप से अन्य परियोजनाओं में निर्भरता के रूप में उपयोग करने के लिए

तो आपके प्रश्न का उत्तर है, यह इस बात पर निर्भर करता है कि क्या आप इसे अपने स्थानीय रेपो में स्थापित करना चाहते हैं। इंस्टॉल पैकेज भी चलेगा क्योंकि यह लक्ष्य चरण स्टैक में अधिक है।


मेरे पास एक परियोजना है जहां मैं मुख्य फ़ोल्डर कोड और टेस्ट फ़ोल्डर कोड को जार में परिवर्तित कर रहा हूं। फिर, मैं इसे नेक्सस में तैनात करना चाहता हूं ताकि इसका उपयोग अन्य परियोजनाओं द्वारा किया जा सके। मेरी तैनाती कमांड "mvan क्लीन पर -DskipTests" है। क्या मैं स्थानीय रेपो में स्थापित करने के बजाय यह कमांड पैकेज बना सकता हूं?
मास्टरजे

@ MasterJoe2 "फिर, मैं इसे नेक्सस में तैनात करना चाहता हूं" यही वह deployहै। यदि आप इसे बदल देते हैं package, तो इसे Nexus पर लागू नहीं किया जाएगा।
Walen

37

mvn installवह विकल्प है जो सबसे अधिक बार उपयोग किया जाता है।
mvn packageशायद ही कभी इस्तेमाल किया जाता है, केवल तब जब आप मावेन बिल्ड प्रक्रिया के साथ कुछ समस्या को डीबग कर रहे हों।

देखें: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

ध्यान दें कि mvn packageकेवल एक जार फ़ाइल बनाएंगे।
mvn installकि क्या करेंगे और उचित स्थानों में जार (और वर्ग आदि) स्थापित फ़ाइलों यदि अन्य कोड उन जार पर निर्भर करता है।

मैं आमतौर पर ए mvn clean install; यह targetनिर्देशिका को हटाता है और उस स्थान के सभी जार को फिर से बनाता है।
स्वच्छ अनावश्यक या हटाए गए सामान के साथ मदद करता है जो कभी-कभी रास्ते में मिल सकते हैं।
बल्कि तब डिबग (कुछ समय) बस हर समय नए सिरे से शुरू करें।


27
मैं असहमत हूं कि पैकेज शायद ही कभी 2 बिंदुओं पर उपयोग किया जाता है। 1) हर बार जब आप इंस्टॉल करते हैं तो यह रन हो जाता है। 2) यदि आप एक .war बना रहे हैं तो सिर्फ रनिंग पैकेज ठीक है क्योंकि आपको अपने स्थानीय रेपो में युद्ध की आवश्यकता नहीं है।
जोशुआ विल्सन

5
उत्तर यह नहीं समझाता है कि आप स्थानीय रिपॉजिटरी में क्यों स्थापित करना पसंद करेंगे। मेरी समझ में, यदि परियोजनाएं सही तरीके से स्थापित की जाती हैं, तो रिएक्टर मॉड्यूल के बीच निर्भरता प्रदान करेगा। यदि परियोजनाएं सही तरीके से स्थापित नहीं की जाती हैं, तो स्थापित करना इस तथ्य को छिपा सकता है और गलत कलाकृतियों का उपयोग कर सकता है। यदि आपके पास आश्रित परियोजनाएं हैं, जिन्हें किसी कारण से अलग से बनाया जाना चाहिए, तभी आप इसे स्थापित करना चाहेंगे।
Vsevolod Golovanov

11

से जीवनचक्र संदर्भ , स्थापित परियोजना के एकीकरण परीक्षण चलाता है, पैकेज नहीं होगा।

यदि आपको वास्तव में उत्पन्न कलाकृतियों को स्थापित करने की आवश्यकता नहीं है, तो कम से कम सत्यापित करें


5

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


4

यदि आप दूरस्थ रिपॉजिटरी (जैसे आर्टिफैक्टल) का उपयोग नहीं कर रहे हैं , तो सादे पुराने का उपयोग करें: mvn clean install

बहुत पुराना विषय लेकिन AFAIK, यदि आप अपनी टीम (एस) के साथ जार साझा करने के लिए अपना भंडार (जैसे: आर्टिफैक्टिक के साथ) चलाते हैं, तो आप उपयोग करना चाहते हैं

mvn clean deploy

बजाय।

इस तरह, आपका निरंतर एकीकरण सर्वर यह सुनिश्चित कर सकता है कि सभी निर्भरताएँ आपके दूरस्थ रिपॉजिटरी में सही ढंग से धकेल दी गई हैं। यदि आप एक चूक गए हैं, तो mvan इसे आपके CI स्थानीय एम 2 रिपॉजिटरी में नहीं खोज पाएगा।


1
मुझे लगता है कि आप
mvan

2

पैकेज - संकलित कोड लेता है और इसे अपने वितरण योग्य प्रारूप में पैकेज करता है, जैसे कि JAR या WAR फ़ाइल। स्थापित - स्थानीय रिपॉजिटरी में पैकेज स्थापित करें, स्थानीय रूप से अन्य परियोजनाओं में निर्भरता के रूप में उपयोग करने के लिए


2

उचित तरीका हैmvn package अगर आप अपने निर्माण के मुख्य भाग के लिए सही ढंग से बातें किया था तो स्थानीय भंडार में अपने पैकेज इंस्टॉल करने की कोई जरूरत नहीं होनी चाहिए।

इसके अलावा यदि आप ट्रैविस का उपयोग करते हैं तो आप अपनी निर्भरता को "कैश" कर सकते हैं क्योंकि यह आपके स्पर्श नहीं करेगा $HOME.m2/repository यदि आप अपने स्वयं के प्रोजेक्ट के लिए पैकेज का उपयोग तो ।

व्यावहारिकता में अगर आप भी ऐसा करने का प्रयास करते हैं, तो mvn siteआपको आमतौर पर mvn installपहले एक करने की आवश्यकता होती है । इसमें siteया तो बहुत से कीड़े हैं या यह कई खराब बनाए गए प्लगइन्स हैं।


0

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

जैसा कि मैं कहता हूं, यह निर्भर करता है कि आप क्या करना चाहते हैं।

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