इस सुलझाने में, मैं Maven के साथ चारों ओर गंदगी के लिए कोई जरूरत नहीं थी, और अकेले IntelliJ विचार के साथ निपटा। मॉड्यूल, पुस्तकालयों और निर्भरता:
मेरे लिए इस समस्या को IntelliJ विचार में तीन अवधारणाओं के बीच भ्रम की स्थिति से हुआ था। मेरे पास विभिन्न पैकेजों का उपयोग करके विभिन्न परियोजनाएं थीं, जिनमें से कुछ असंगत तरीकों से एक-दूसरे का जिक्र कर रहे थे। मैं डाउनलोड किए गए तृतीय-पक्ष पैकेजों को संदर्भित करने के तरीके के बारे में भी असंगत था।
यह एक बार मैं मॉड्यूल, पुस्तकालयों और निर्भरता के तीन अवधारणाओं प्रतिष्ठित आसान था। मैंने उन्हें अपने दिमाग में कैसे स्पष्ट किया:
1) पुस्तकालय कोड (संकलित या नहीं) का संदर्भ लें जो बदलने वाला नहीं है।
2) मॉड्यूल प्रोजेक्ट के कुछ हिस्सों (यदि आप अकेले काम कर रहे हैं) का संदर्भ लें जहां कोड बदलना है।
3) ए निर्भरता (इस वार्तालाप के लिए) एक पुस्तकालय या अन्य मॉड्यूल है जो एक विशेष मॉड्यूल का उपयोग करेगा।
मैं, एक सतत परियोजना है, जो मूलतः एक और आईडीई द्वारा बनाया गया था के कोड जोड़ने IntelliJ विचार में एक निर्भरता के रूप में से त्रुटि मिली। सिद्धांत रूप में यह काम करना चाहिए, और यह करता है, लेकिन आप की तरह मैं अपने विकास पर्यावरण के शीर्ष पर एक बड़ा लाल बैनर अनदेखा नहीं कर सकता!
समस्या को हल करने के लिए:
मॉड्यूल फ़ाइल खोलें> परियोजना संरचना> मॉड्यूल और शीर्ष बाएं हरी धन चिह्न (नहीं सही करने के लिए एक) जोड़ा अन्य परियोजनाओं जहां कोड की संभावना है का उपयोग करते हुए परिवर्तन। इससे उन्हें इंटेलिजे को 'जिंदा' बना दिया जाता है, न कि एक बदसूरत पुरानी अपरिवर्तनीय लाइब्रेरी, जो बदली जाती है, अलार्म बैनर आपको चिल्लाने का कारण बन सकती है। इस चरण में, आप जो चाहते हैं उसे सत्यापित करने के लिए आयातित जार, स्रोत कोड इत्यादि की जांच के लिए अधिकांश संवाद लेने वाले बड़े पैनल का उपयोग करें।
पुस्तकालय फ़ाइल खोलें> परियोजना संरचना> पुस्तकालय, और फिर से ऊपरी बाएँ हरी धन चिह्न कोड है कि परिवर्तन नहीं होगा वाले फ़ोल्डर जोड़ने का उपयोग कर। दाईं ओर स्थित अन्य हरे रंग के प्लस साइन आपको पहले से जोड़े गए लाइब्रेरी में आंतरिक फ़ोल्डरों को जोड़ने की अनुमति देता है, लेकिन इंटेलिजे विभिन्न परियोजना संरचनाओं में इन्हें ढूंढने में अच्छा है, इसलिए विशिष्ट फ़ोल्डरों को जोड़ने के बजाए, एक नई लाइब्रेरी जोड़ने के लिए स्क्रैच से शुरू करने पर विचार करें गायब हैं और कई प्रतियां मौजूद हैं, एक और चीज जो IntelliJ को भ्रम (समझदारी से) का कारण बनती है।
निर्भरता अब सब कुछ आप फ़ाइल> परियोजना संरचना> मॉड्यूल वापस जाने के लिए के लिए तैयार रहना चाहिए। इस बार अधिकांश पैनल को ले जाने वाले बड़े पैनल पर जाएं और 'निर्भरता' टैब में बदलें। इस चरण में काम करने का मेरा पसंदीदा तरीका (विशेष रूप से जब परियोजना बड़ी और जटिल होती है) सूचीबद्ध मॉड्यूल के नीचे अपना रास्ता काम करना है, प्रत्येक मॉड्यूल के लिए पुस्तकालयों और मॉड्यूल निर्भरताओं को जोड़ना है। प्रत्येक मॉड्यूल के लिए इस बार प्रत्येक लाइब्रेरी या मॉड्यूल को जोड़ने के लिए दाईं ओर हरे रंग के प्लस साइन का उपयोग करें, और इन्हें अंतिम चरण में जोड़े गए लोगों से आपको पेश किया जाना चाहिए।
चेतावनी वहाँ दो महत्वपूर्ण कदम जो आप जब प्रक्रिया को पूरा किये बगैर सावधान रहना चाहिए हैं:
1. सुनिश्चित करें कि प्रत्येक निर्भरता आप के लिए जोड़ा बनाओ प्रत्येक मॉड्यूल पर निर्भरता टैब में 'संकलन' का दायरा है।
2. जब आप समाप्त कर, परियोजना संरचनाएं के तल पर लागू करें बटन संवाद ठीक क्लिक से पहले क्लिक करें। ऐसा लगता है कि यह स्वचालित होना चाहिए, इंटेलिजे में इतना और, लेकिन मुझे नहीं लगता कि यह है। संवाद से बाहर निकलने से पहले आवेदन पर क्लिक न करके मैंने परियोजना संरचना में किए गए परिवर्तनों को खो दिया है।
तुम एक हो सकता है एक ही पुस्तकालय के एक अलग संस्करण पर एक पारस्परिक निर्भरता के साथ निर्भरता। आप https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the- निर्भरता-tree.html पर उदाहरण के बाद उन्हें खोज सकते हैं। यदि आपको लगता है कि कोई मेल नहीं है, तो आप अपनी निर्भरता की पारगमन निर्भरता को बाहर करने के लिए कह सकते हैं ताकि सभी एक ही lib संस्करण का उपयोग कर सकें। –
@HankD मैं कैसे बता सकता हूं कि उनमें से कौन सा संक्रमणीय है? मैंने निर्भरता को आजमाया लेकिन ऐसा प्रतीत नहीं होता कि मेरे यहां एक संक्रमणीय है। – displayname
संक्रमणीय वाले लोग '\ -' से शुरू होते हैं, इसलिए मुझे नहीं लगता कि यह है। आप स्रोत कोड के अपडेट को मजबूर करने के लिए 'एमवीएन निर्भरता: स्रोत' चलाने का प्रयास कर सकते हैं (http://stackoverflow.com/questions/2059431/get-source-jars-from-maven-repository) –