2015-09-05 7 views
5

मेरे लिए सरल मामला: मैं 2 बहुत लोकप्रिय लेकिन विवादित स्कैला पुस्तकालयों का उपयोग कर रहा हूं: स्पार्क एसक्यूएल & JSON4s। प्रत्येक जैक्सन एक्सएमएल पार्सर के विभिन्न संस्करणों पर निर्भर करता है।आईडीई (इंटेलिजे) में जेएआर हेल, एमवीएन-टेस्ट और एमवीएन-पैकेज: सभी सेटिंग्स में निर्भरता स्थानांतरण कैसे एकीकृत करें?

चूंकि मेरे अपने प्रोग्राम को छोड़कर कोई भी JSON4s का उपयोग नहीं कर रहा है, इसलिए एक आसान समाधान org.json4s.jackson और com.fasterxml.jackson को नए स्थानों पर माइग्रेट करना है।

हालांकि, मेवेन-शेड प्लगइन केवल पैकेजिंग प्रक्रिया में ही ऐसा कर सकता है, क्योंकि इससे पहले सभी परीक्षण और आईडीई रन होते हैं। यह अभी भी सभी परीक्षणों को असफल होने का कारण बनता है, भले ही आईडीई में एमवीएन-टेस्ट या स्कैला टेस्ट में भाग लेना है या नहीं।

क्या कोई ऐसी प्लगइन है जो सभी तीन मामलों के लिए पैकेज स्थानांतरण नीतियों को सामूहिक रूप से प्रबंधित कर सकती है: जेएआर-पैकेजिंग/एमवीएन-टेस्ट/आईडीई-रन? मैं पूरे दिन इंटरनेट खोज रहा हूं और मुझे कोई जवाब नहीं मिल रहा है।

+0

जैक्सन के विभिन्न संस्करण क्या हैं? आप अपनी खुद की pom.xml में निर्भरताओं में से एक को ओवरराइड कर सकते हैं ताकि केवल एक उदाहरण मौजूद हो। –

+0

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

+0

मैं केवल आधे मजाक कर रहा हूं, लेकिन दोनों संस्करणों को लोड करने के लिए ओएसजीआई का उपयोग करें ... –

उत्तर

4

हमने पुस्तकालयों को संरेखित करने के लिए पुन: संकलन (और पैचिंग) द्वारा इस मुद्दे को हल किया। किसी भी चीज से संबंधित छाया एक दूसरे के पक्ष में एक संस्करण का पक्ष लेने जा रही है, जिसका मतलब है कि आप एक पुस्तकालय में क्या ठीक कर सकते हैं, आप दूसरे में तोड़ सकते हैं।

और OSGi शिविर से उन टिप्पणियों के लिए, हाँ, कि क्या OSGi ठीक करने के लिए चाहिए था, लेकिन यह एक स्पार्क संदर्भ :) में इतनी अच्छी तरह से काम नहीं करता

आप दोनों में से एक माना जाता है पदावनति संसाधन संरेखित करने के लिए संस्करण? अक्सर पुस्तकालयों में से एक पहले रिलीज करने का प्रबंधन करता है, दूसरे को पीछे छोड़कर थोड़ा सा छोड़ देता है ... कभी-कभी उत्तर एक सतत लेकिन पुराने संस्करण को चलाने में पाया जा सकता है जो "अंतिम रिलीज" प्रोजेक्ट के साथ संरेखित होता है।

+0

जो मैंने सोचा था उससे कहीं अधिक कठिन लगता है: मुझे विश्वास था कि छायांकित कलाकृतियों को अभी पैकेजों का नाम बदल दिया गया है और वे बिना किसी एक के साथ सह-अस्तित्व में रह सकते हैं (जब तक उनमें से एक को विशेष रूप से अन्य पुस्तकालय द्वारा उपयोग किया जाता है)। मैंने पहले अन्य मामलों के लिए डाउनग्रेड किया है, लेकिन इस मामले में जेसन 4 एस-जैक्सन 3.11 कुछ महत्वपूर्ण कार्यक्षमता प्रदान करता है जो पुराने संस्करण – tribbloid

+0

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

+1

यदि संभव हो, और यदि आप इसे संकलित करने की आवश्यकता नहीं लेना चाहते हैं, तो मैं उस तारीख को खोजने का प्रयास करूंगा जहां सभी पुस्तकालयों को संरेखित किया जाए और फिर अपनी वांछित रिलीज प्राप्त करने के लिए घटकों को अपग्रेड/डाउनग्रेड करें। कभी-कभी इसका मतलब है कि सामान की इस विशाल गेंद के बजाय केवल कुछ चीजें पैचिंग और संकलित करना। –

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

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