मावेन निर्भरता का उपयोग करने के लिए ग्रहण निर्माण पथ को कैसे कॉन्फ़िगर करें?


124

मैं उन सुविधाओं का लाभ उठाना चाहूंगा जो मावेन एक परियोजना में निर्भरता के प्रबंधन के लिए प्रदान करता है। मावेन कैसे काम करता है, इस बारे में मेरी संक्षिप्त समझ यह है कि यह जार की जरूरत को पूरा करेगा और फिर इन पुस्तकालयों के साथ परियोजना का निर्माण करेगा।

वर्तमान में मेरे पास परीक्षण के रूप में एक साधारण पीओएम फ़ाइल है:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jamesgoodwin.test</groupId>
  <artifactId>com.jamesgoodwin.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

निर्भरता का प्रबंधन करने के लिए, मैं आमतौर पर प्रोजेक्ट या JAR को बिल्ड पथ में जोड़ता हूं और फिर मैं अपनी परियोजना का निर्माण कर सकूंगा।

लेकिन M2Eclipse का उपयोग करते समय निर्भरताएँ निर्मित पथ में स्वचालित रूप से नहीं जोड़ी जाती हैं। क्या ग्रहण को यह बताने के लिए कोई विन्यास है कि मावेन निर्भरता का प्रबंधन कर रहा है?

जवाबों:


116

यदि आप अपनी परियोजना पर राइट-क्लिक करते हैं, तो "मावेन" के तहत "निर्भरता प्रबंधन को सक्षम" करने के लिए एक विकल्प होना चाहिए। बस।


2
यदि आप मवन ग्रहण: ग्रहण के साथ बनाई गई परियोजना को आयात करते हैं, तो m2eclipse डिफ़ॉल्ट रूप से ऐसा नहीं करता है: इसलिए यह हमेशा लोगों को यात्रा करने के लिए लगता है।
मैट बी

28
यह वास्तव में मेरी परियोजना के लिए पहले से ही सक्षम था। शायद इसलिए कि मैंने किसी मौजूदा प्रोजेक्ट में POM फ़ाइल जोड़ने का विकल्प चुना है? हालाँकि Maven> अपडेट प्रोजेक्ट कॉन्फ़िगरेशन करने से लगता है कि यह मेरे लिए तय है। इसके अलावा यह आपका जवाब था कि आखिरकार मुझे उस टूलबार की खोज करने के लिए प्रेरित किया जहां मैं परियोजना को ठीक कर सकता था। बहुत धन्यवाद
जेम्स गुडविन

12
क्या होगा अगर राइट-क्लिक मेनू में कोई "मावेन" विकल्प नहीं है, भले ही मुझे लगता है कि ए 2eclipse स्थापित है?
dfrankow

85
आह, "कॉन्फ़िगर करें" => "मावेन प्रोजेक्ट में कनवर्ट करें" आपका मित्र है!
dfrankow

2
@dfrankow क्या होगा यदि "कॉन्फ़िगर" => "मावेन प्रोजेक्ट में कनवर्ट करें" विकल्प मौजूद नहीं है ??
वासिलकफिल

67

यदि आप निष्पादित करते हैं

mvn eclipse:clean

के बाद

mvn eclipse:eclipse

यदि .classpathआप के लिए ग्रहण फ़ाइल तैयार करेंगे । यही है, ये कमांड कमांड लाइन से ग्रहण के बाहर अर्थात ग्रहण के बाहर चलाए जाते हैं।


ध्यान दें कि यह आपकी निर्भरता को संदर्भित करने के लिए एक classpath चर (M2_REPO) का उपयोग करके काम करता है, यह m2eclipse का उपयोग नहीं करता है और मुझे विश्वास नहीं है कि यह आप पर निर्भर करता है और आपके द्वारा प्रोजेक्ट पर काम करते समय निर्भरता जोड़ते हैं - लेकिन यह प्राप्त करने के लिए बहुत अच्छा है प्रारंभिक सेटअप चल रहा है
मैट बी

@matt b: आपको मवन ग्रहण को फिर से करने की आवश्यकता है: हर बार जब आपकी निर्भरता बदलती है तो ग्रहण करें।
बुहब

बुहब ने जो कहा, उसे जोड़ने के लिए, mnv ग्रहण करें: कमांड लाइन पर ग्रहण करें और हर बार जब आप pom.xml में अधिक डिप्स जोड़ते हैं तो ग्रहण प्रोजेक्ट को रिफ्रेश करें।
बिनिल थॉमस

5
M2eclipse प्लगइन का उपयोग करते समय इसके लिए कोई आवश्यकता नहीं है।
पास्कल थिवेंट

3
मैं m2eclipse प्लगइन का उपयोग कर रहा हूं और मौजूदा मावेन प्रोजेक्ट को ग्रहण में आयात करने के बाद समस्या का सामना कर रहा था। कर mvn eclipse:cleanऔर mvn eclipse:eclipseवास्तव में मेरे लिए समस्या तय की।
एरियोब जूल

29

मैं मान रहा हूँ कि आप m2eclipse का उपयोग कर रहे हैं जैसा कि आपने उल्लेख किया है। हालाँकि यह स्पष्ट नहीं है कि आपने अपना प्रोजेक्ट एक्लिप्स के तहत बनाया है या नहीं इसलिए मैं सभी मामलों को कवर करने की कोशिश करूँगा।

  1. यदि आपने एक्लिप्स (Ctrl + N> जावा प्रोजेक्ट) के तहत "जावा" प्रोजेक्ट बनाया है, तो पैकेज एक्सप्लोरर दृश्य में प्रोजेक्ट को राइट-क्लिक करें और Maven> Enable Dependency Management (प्रारंभिक परियोजना संरचना के आधार पर, आप संशोधित कर सकते हैं) पर जाएं। यह मावेन के एक से मेल करने के लिए, उदाहरण के लिए निर्माण पथ पर स्रोत फ़ोल्डर में जोड़कर )।src/java

  2. यदि आपने ग्रहण (Ctrl + N> Maven Project) के तहत "मावेन प्रोजेक्ट" बनाया है, तो यह पहले से ही "मावेन तैयार" होना चाहिए।

  3. आप ग्रहण (स्वयं या एक आदर्श के साथ), तो बस के बाहर एक Maven परियोजना बनाई थी, तो आयात (ग्रहण में यह राइट क्लिक करें पैकेज एक्सप्लोरर देख सकते हैं और चयन आयात करें ...> Maven परियोजनाओं ) और यह हो जाएगा "Maven तैयार"।

अब, एक निर्भरता जोड़ने के लिए, प्रोजेक्ट को राइट-क्लिक करें और Maven> Add Dependency ) चुनें या मैन्युअल रूप से पोम को एडिट करें।

PS: यदि आप m2eclip का उपयोग कर रहे हैं तो मावेन -एक्लिप्स-प्लगइन का उपयोग करने से बचें। इसकी बिल्कुल जरूरत नहीं है, यह भ्रामक होगा, यह कुछ गड़बड़ पैदा करेगा। नहीं, वास्तव में, इसका उपयोग न करें जब तक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं।


2
बस पता चला कि मावेन-एक्लिप्स-प्लगइन मेरी अजीब अनसुलझे निर्भरता त्रुटियों का कारण था। धन्यवाद!
विघ्न

1
मैं केवल आधिकारिक साइट से डाउनलोड किए गए EclipseNeon का उपयोग करता हूं .. जब मैंने मानक जावा प्रोजेक्ट बनाया है तो मेनू में कोई विकल्प नहीं है। क्या हमें अलग से कुछ स्थापित करने की आवश्यकता है या सब कुछ पहले से ही नियॉन के साथ डाउनलोड किया गया है?
ईवोक

@ पास्कल थिवेंट, मैंने मावेन परियोजना का आयात किया है। मैं इसका समाधान नहीं खोज पा रहा हूँ
सैयद

19

इसे .classpath फ़ाइल में जोड़ें ..

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

धन्यवाद


1
हाँ, मुझे लगता है कि पिछले कुछ वर्षों से हर जगह मैन्युअल रूप से जोड़ने की आवश्यकता है .... वे मावेन निर्भरता को स्वचालित रूप से पुनः प्राप्त करने के लिए ग्रहण प्लगइन्स क्यों नहीं लगाते हैं ??
रेजर

1
इस समाधान के लिए धन्यवाद। इसने मेरे लिए काम किया। मैं अकस्मात हटा दिया गया है .project और .classpath फ़ाइलें। इस समाधान ने मेरे लिए क्लास पथ में मावेन निर्भरता को जोड़ने के लिए काम किया,
ताहिर महमूद

उपरोक्त .classpath फ़ाइल को स्वचालित रूप से जनरेट करने का शॉर्टकट प्रोजेक्ट है -> Maven -> अपडेट प्रोजेक्ट अन्यथा केवल Alt + F5
वेंकटेश्वर राव

मेरे लिए भी काम किया। मेरी अधिकांश गुम निर्भरताओं को हल किया है, लेकिन अभी भी कुछ समस्याएं हैं, इसलिए मुझे आश्चर्य है कि अगर अधिक उपयोगकर्ता के अनुकूल समाधान काम नहीं कर रहे हैं क्योंकि कहीं न कहीं एक छोटी सी त्रुटि है (लेकिन यह व्यवहार समस्या को कम करने में मदद नहीं करता है ...)
xenoid

14

प्रोजेक्ट पर राइट क्लिक करें कॉन्फ़िगर करें> मावेन प्रोजेक्ट में कनवर्ट करें

फिर आप अपने प्रोजेक्ट के लिए सभी मावेन संबंधित मेनू देख सकते हैं।


सही तरीका अगर आपने पहली बार में एक mvan प्रोजेक्ट नहीं बनाया
हेंसस श्नीडेमेयर

10

मुझे यह पसंद आया ..

प्रोजेक्ट पर राइट क्लिक करें -> कॉन्फ़िगर -> मावेन प्रोजेक्ट में कनवर्ट करें। प्रोजेक्ट पर राइट क्लिक करें -> मावेन -> निर्भरता जोड़ें।


5

ग्रहण (मंगल) में जाएं:

परियोजना गुण -> मावेन। सुनिश्चित करें कि "कार्यक्षेत्र परियोजनाओं से निर्भरता को हल करें" अक्षम है


यह मूल समस्या को हल नहीं करता था, हालांकि यह डीआईडी ​​एक और घिनौनी समस्या को हल करता है जो मैं हफ्तों से कर रहा था - उस विकल्प को अक्षम करने के बाद, मेरी परियोजना, जो केवल एक मावेन कमांड लाइन से चल रही थी, अब फिर से ग्रहण के अंदर चल रही है! धन्यवाद!
बिल हिलमैन

4

मुझे मेनू या कॉन्फ़िगर मेनू नहीं मिला लेकिन निम्नलिखित बटन मिला जिसने मेरी समस्या हल की:

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


2

जब m2eclipse ठीक से स्थापित है, तो यह स्वचालित रूप से निर्भरता को जोड़ना चाहिए। हालाँकि, आपको दर्ज करके ग्रहण परियोजना की फाइलें बनानी चाहिए:

mvn eclipse:m2eclipse

या, वैकल्पिक रूप से यदि आप m2eclipse का उपयोग नहीं करते हैं:

mvn eclipse:eclipse

3
ध्यान दें: चूंकि संस्करण 2.8 मेवेन-एक्लिप्स-प्लगइन "एक्लिप्स: एमेक्लिप्स" का समर्थन नहीं करता है (अब कारण / सूचना नहीं मिल सकती है)
वोलकेनार्चिटेट

1

मेरे पास थोड़ी भिन्नता थी जो कुछ मुद्दों का कारण बनी - एक परियोजना के भीतर कई उप परियोजनाएं। इस मामले में मुझे प्रत्येक व्यक्तिगत फ़ोल्डर में जाने की जरूरत थी जिसमें POM सम्‍मिलित है, mvan ग्रहण को निष्पादित करें: ग्रहण कमांड और उसके बाद classpath प्रविष्टियों को अपने प्रोजेक्ट classpath फ़ाइल में मैन्युअल रूप से कॉपी / मर्ज करें।


1

नए ग्रहण संस्करणों (> = मंगल) के लिए प्रोजेक्ट पर राइट क्लिक करें> कॉन्फ़िगर करें> मावेन प्रोजेक्ट में कनवर्ट करें


1

कुछ कारणों से मेरे जवाब जोड़ना:

  • किसी भी तरह सूचीबद्ध उत्तर में से किसी ने भी सीधे मेरी समस्या का समाधान नहीं किया।
  • मुझे मावेन के तहत "निर्भरता प्रबंधन सक्षम करें" नहीं मिला। मैं ग्रहण का उपयोग कर रहा हूँ 4.4.2 बुध पर निर्माण, 4 फरवरी 2015।

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


1

उसमे से किसी ने भी मेरी समस्या का समाधान नहीं किया। लेकिन मैंने जो किया था अगर वह pom.xml पर क्लिक करता है, तो नीचे एक टैब है, जिसे निर्भरताएँ कहा जाता है। इस टैब में इसे 2 खंडों में विभाजित किया गया है, एक को निर्भरता कहा जाता है और एक को निर्भरता प्रबंधन कहा जाता है। निर्भरता अनुभाग में हर चीज का चयन करें और निर्भरता प्रबंधन नियंत्रण के तहत जोड़ने के लिए क्लिक करें। अपनी परियोजना को बंद करें और फिर से खोलें।


0

हो सकता है कि आप M2Eclipse के बजाय maven-eclipse-plugin में देख सकें।

वहां आप मूल रूप से अपने pom.xml में मावेन-एक्लिप्स-प्लगइन कॉन्फ़िगरेशन जोड़ते हैं और फिर निष्पादित करते हैं mvn eclipse:eclipseजो ग्रहण के लिए आवश्यक .projectऔर .classpathफाइलें उत्पन्न करेगा । तब आपके पास ग्रहण में सही निर्माण पथ होगा।


ग्रहण: ग्रहण बुरा है, सभी पुस्तकालयों को, एक-एक करके, आपकी निर्भरता के बजाय मावेन पर निर्भर करता है
रेजर

0

सुनिश्चित करें कि आपका पीओएम नामकरण सम्मेलन का अनुसरण करता है, और इसे लोअरकेस लेटरिंग में नामित किया गया है pom.xmlऔर नहीं POM.xml

मेरे मामले में सब सही था, लेकिन राइट-क्लिक करने की कोशिश करने पर एक्लिप्स ने फिर भी शिकायत की और Update project configuration- मुझे बताया कि पीओएम को पढ़ा नहीं जा सकता। नाम को लोअरकेस pom.xmlसे बदल दिया POM.xml- और यह काम कर गया।


0

मैं इस मुद्दे पर भी मिला। जब मैं निर्भरता जोड़ता हूं pom.xml, तो मैंने स्थानीय फ़ोल्डर में चेक किया /Users/xyz/.m2/और जार पहले से ही वहां डाउनलोड हैं, लेकिन ग्रहण के बिल्डपैथ में नहीं जोड़ा जा सकता है।

मेरा ग्रहण संस्करण: मार्स २ रिलीज़ (४.५.२)

राइट क्लिक प्रोजेक्ट > मावेन > वर्कस्पेस रिज़ॉल्यूशन सक्षम करें

और इससे मेरी समस्या हल हो गई।


0

आमतौर पर, आप किसी कार्यशील प्रोजेक्ट से .classpath फ़ाइल की प्रतिलिपि बना सकते हैं क्योंकि यहाँ कुछ भी विशिष्ट प्रोजेक्ट नहीं है, मान लें कि आप एक मानक मावेन प्रोजेक्ट के रूप में संरचित हैं।


0

इसने मेरे लिए ग्रहण ऑक्सीजन (4.7.0) में काम किया:

राइट क्लिक प्रोजेक्ट -> मावेन -> मावेन प्रोफाइल चुनें ... फिर रिपोजिटरी प्रॉक्सी बॉक्स को चेक करें, ओके दबाएं।

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