2011-02-04 13 views
10

हमारे पास है: ग्रहण 3.6, मेवेन (एम 2 एक्लिप्स), दो परियोजना (प्रोजेक्टए और प्रोजेक्टबी) pom.xml के साथ।"वर्कस्पेस प्रोजेक्ट" मैवेन रिपोजिटरी का उपयोग करने का कोई तरीका है?

प्रोजेक्ट बी प्रोजेक्टए (मेवेन का उपयोग करके) पर निर्भर करता है।

  1. यदि हम प्रोजेक्ट ए को स्थानीय भंडार (मेवेन इंस्टॉल) में स्थापित करते हैं, तो ProjectB संकल्प निर्भरता ठीक है।

  2. यदि हम स्थानीय भंडार में ProjectA इंस्टॉल नहीं करते हैं। मेवेन पीओएम संपादक में हम प्रोजेक्टए को प्रोजेक्टबी की निर्भरता के रूप में जोड़ते हैं (इस निर्भरता को हल करने के लिए "वर्कस्पेस प्रोजेक्ट" रिपोजिटरी का उपयोग करके एम 2 एक्लिप्स)।

ठीक है, जोड़ा गया। लेकिन अगर हम "मेवेन पैकेज" या अन्य प्लगइन्स लक्ष्यों को करते हैं ... निर्भरता हल नहीं होती है। और हम उस तरह somethings है:

डाउनलोड कर रहा है: http://repo1.maven.org/maven2/Artifact/ProjectA/maven-metadata.xml

और निश्चित रूप से यह हल नहीं किया जा सकता है।

अब प्रश्न है। प्रोजेक्टबी बनाने के दौरान मैं "वर्कस्पेस प्रोजेक्ट" का उपयोग कैसे कर सकता हूं?

पीएस मैं "मैवेन इंस्टॉल" का उपयोग क्यों नहीं कर रहा हूं? ठीक है, यह 100% विधि है, लेकिन जब मैं कई में कई छोटे बदलाव करता हूं तो यह बहुत अधिक संचालन करता है।

पीएसएस "वर्कस्पेस प्रोजेक्ट" हम विंडो देख सकते हैं -> शो देखें -> मेवेन रिपोजिटरीज।

उत्तर

1
  1. वर्कस्पेस निर्भरता का समाधान किया जाना चाहिए। इस प्रयास करें,

    रन> चलाने विन्यास> Maven का निर्माण> नई> परियोजना का चयन B> जाँच "कार्यस्थान विरूपण साक्ष्य को हल"> के रूप में package

    निर्धारित लक्ष्यों का चयन ऑफ़लाइन चेक-बॉक्स के साथ-साथ।

  2. शायद, आप projectB निर्भरता टैग में PROJECTA की सटीक version प्रदान करने के लिए की जरूरत है। अन्यथा, यह नवीनतम खींचने के लिए मेवेन सार्वजनिक भंडार को देख सकता है।

उम्मीद है कि इससे मदद मिलती है।

+0

1. सहायता न करें। "डाउनलोड करना: http://repo1.maven.org/maven2/Project ए .... पोम"। सार्वजनिक भंडार का उपयोग कर हल करने का प्रयास करें। ऑफ़लाइन चेक किया गया है तुरंत लिखें "प्रोजेक्ट ए के लिए पीओएम गुम है, कोई निर्भरता जानकारी उपलब्ध नहीं है"। 2. संस्करण प्रदान किया जाता है। mmm ... समस्या सार्वजनिक भंडार में नहीं है। समस्या वर्कस्पेस में निर्भरता परियोजना को हल करने में है और स्थानीय भंडार में स्थापित नहीं है। – Alexander

0

इस (ProjectB में) का प्रयास करें:

Maven > Enable Workspace Resolution 

ऐसा ही एक मुद्दा है कि रास्ते में यहाँ हल किया गया था।

2

मुझे लगता है कि 'मेवेन पैकेज' चलाने या ग्रहण से समान लक्ष्यों को चलाने का विचार उदाहरण के लिए कमांडलाइन से चलने पर जो भी मैवेन किया होता है। जो परिदृश्य आप दे रहे हैं वह कमांडलाइन पर काम नहीं करेगा।

यदि प्रोजेक्ट बी प्रोजेक्ट ए (pom.xml के माध्यम से) पर निर्भर करता है जिसका अर्थ है कि प्रोजेक्ट ए को एक भंडार में उपलब्ध होना चाहिए। चाहे वह स्थानीय (एमवीएन इंस्टॉल के माध्यम से) या रिमोट (एमवीएन तैनाती) के माध्यम से कोई फर्क नहीं पड़ता, लेकिन एमवीएन पैकेज पर्याप्त नहीं है। यह सिर्फ/लक्ष्य फ़ोल्डर में एक पैकेज डाल देगा।

एकमात्र अपवाद होगा यदि दोनों परियोजनाएं एक ही रिएक्टर में रहती हैं, मुझे लगता है कि दोनों परियोजनाएं कुछ अन्य 'मूल' परियोजना के मॉड्यूल हैं। उस स्थिति में एक पनडुब्बियों में से एक पर मेवेन लक्ष्य ट्रिगर करने से निर्भरता को ठीक करने में सक्षम हो सकता है। हालांकि 100% निश्चित नहीं है।

अपने प्रश्न पर वापस जाएं: "अब प्रश्न है। मैं प्रोजेक्टबी बनाने के दौरान" वर्कस्पेस प्रोजेक्ट "का उपयोग कैसे कर सकता हूं?"। नहीं, मुझे ऐसा नहीं लगता।

+0

यदि M2Eclipse सही तरीके से सेटअप है, तो ग्रहण में "प्रोजेक्ट> बिल्ड ऑल" दबाकर कार्य करेगा जैसे कि दोनों परियोजनाएं एक ही रिएक्टर में हैं और इस प्रकार काम करेंगे। जैसा कि आपने सही ढंग से अनुमान लगाया है, यह केवल तब होता है जब आप "जैसे ही> मेवेन बिल्ड ..." को आज़माते हैं, आपको परेशानी होती है क्योंकि वह कमांड लाइन मेवेन लॉन्च करेगी। – JBert

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