हमारे पास एक बड़ी (> 500,000 LOC) जावा सिस्टम है जो 40-50 OSS पैकेज पर निर्भर करता है। सिस्टम चींटी के साथ बनाया गया है, और निर्भरता प्रबंधन वर्तमान में मैन्युअल रूप से संभाला जाता है। मैं स्वचालित निर्भरताओं के लिए आइवी और/या मेवेन की जांच कर रहा हूं। हमने पिछले साल एक स्वचालन प्रणाली के निर्माण के रूप में मेवेन को देखा और इसे अस्वीकार कर दिया क्योंकि इसे मेवेन के आर्किटेक्चर से मेल खाने के लिए पूरी तरह से हमारे सिस्टम को पुनर्गठन की आवश्यकता होगी। अब मैं निर्भरता प्रबंधन कार्यों को स्वचालित करने के लिए देख रहा हूं।बड़े जावा सिस्टम निर्भरता प्रबंधन
मैंने आइवी के साथ कुछ प्रयोग किया है लेकिन समस्याओं में भाग लिया है। उदाहरण के लिए, जब मैं एक्टिवएमक्यू को निर्भरता के रूप में निर्दिष्ट करता हूं, और आइवी को पर निर्भर करता हूं, निर्भरता विनिर्देश के लिए मेवेन रिपॉजिटरी में पीओएम का उपयोग करें, आइवी पैकेजों का एक गुच्छा पुनर्प्राप्त करता है (जेटी, डर्बी और गेरोनिमो उदाहरण के लिए) जो मुझे पता है ' केवल ActiveMQ का उपयोग करने की आवश्यकता नहीं है।
अगर मैं सेट usepoms = "false" ivysettings.xml में यह केवल activemq.jar को हासिल करेगा, लेकिन वह आइवी का उद्देश्य विफल हो रहा है और मैन्युअल रूप से बनाया निर्भरता विशिष्टताओं के साथ एक सरल जार-फ़ेचर को यह relegates ।
यहां एक बड़ा मुद्दा है, जिसे विंडोज़ में "डीएलएल नरक" कहा जाता था। कुछ मामलों में, दो प्रत्यक्ष प्रथम-स्तर निर्भरता समान ट्रांजिटिव निर्भरता के विभिन्न संस्करणों ( उदाहरण log4j.jar के लिए) इंगित करेगी। केवल एक log4j.jar क्लासपाथ में हो सकता है, इसलिए निर्भरता रिज़ॉल्यूशन में मैन्युअल रूप से यह निर्धारित करना शामिल है कि कौन सा संस्करण हमारे सिस्टम में अपने सभी ग्राहकों के साथ संगत है।
मुझे लगता है कि यह सभी पैकेज की निर्भरता विनिर्देश (पीओएम) की गुणवत्ता के लिए उबाल जाता है। ActiveMQ के मामले में, कोई स्कोप घोषणाएं नहीं हैं, इसलिए ActiveMQ का कोई भी संदर्भ इसकी सभी निर्भरताओं को डाउनलोड करेगा जब तक कि हम उन लोगों को मैन्युअल रूप से बहिष्कृत नहीं करते जिन्हें हम जानते हैं कि हम नहीं चाहते हैं।
log4j के मामले में, स्वचालित निर्भरता संकल्प की आवश्यकता होगी कि log4j के ग्राहकों (अन्य संकुल कि log4j पर निर्भर करते हैं) log4j के सभी पूर्व संस्करण के खिलाफ सत्यापित करें और संगत log4j संस्करणों की एक सीमा (या सूची) प्रदान के सभी पीओएम में यह शायद पूछने के लिए बहुत कुछ है।
क्या यह वर्तमान स्थिति है, या क्या मुझे कुछ याद आ रही है?
+1। मुझे उम्मीद है कि आपको एक अच्छा जवाब मिल जाएगा। –
शीर्ष 4 अपरिवर्तित उत्तर सभी मूल्यवान परिप्रेक्ष्य प्रदान करते हैं। केविन संक्षिप्त और सटीक है। रॉबर्ट और रिच अधिक जानकारी प्रदान करते हैं। व्लादिमीर असली दुनिया के अनुभव के आधार पर एक सकारात्मक राय योगदान देता है। चार एक साथ मेरी उम्मीदों को निर्धारित करने में मदद करते हैं और समस्या को हल करने के तरीके को इंगित करते हैं। मैं सभी चार उत्तरों को "स्वीकार" करना चाहता हूं, लेकिन एसओ इसे अनुमति नहीं देता है। मैं रॉबर्ट मुन्तेनु को स्वीकार कर रहा हूं क्योंकि वह पहले विस्तृत जवाब के साथ थे। –