2009-07-07 16 views
11

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

विशेष रूप से मेरे मामले में मेरे पास है:

w.war 

a.jar 
b.jar 
c.jar 

w.war युद्ध फ़ाइल मैं वेब सर्वर पर तैनात है। युद्ध फ़ाइल में मैं a.jar का उपयोग करता हूं। a.jar b.jar पर निर्भर करता है, तो मैं खुशी से साथ ही w में b.jar पैकेज ... उस तरह के ठीक जब तक है ... समस्या शुरू होता है जब b.jar c.jar पर निर्भर करता है। तो यह w.war में b.jar पैकेज कर सकते हैं a.jar के लेखक b.jar पर अपनी निर्भरता के बारे में जानता है, लेकिन यह c.jar पर b.jar की निर्भरता के बारे में पता नहीं है। इसके अलावा, b.jar के लेखक बाद में, जैसे कि "b.jar e.jar पर निर्भर करता है" और भी अधिक निर्भरता जोड़ सकता है तो a.jar के लेखक इन निर्भरताओं निम्नलिखित के रूप में वे जोड़ कोई मौका नहीं है।

मेरे पास करने के लिए क्या करना चाहते हैं परिभाषित "एक बी पर निर्भर करता है" और "b ग पर निर्भर करता है" (एक अलग build.xml फ़ाइल में) और उन सब w.war में संकलित करने के लिए चींटी जादू का उपयोग करें। क्या यह संभव है? यदि नहीं, तो क्या एक सर्वोत्तम अभ्यास है?

मैं इस बंद बस को फिर से लिखने के लिए कर रहा हूँ सब Maven में है, लेकिन यह बहुत काम है ... वहाँ चींटी की उम्मीद है?

+0

मैं चींटी के लिए अपने स्वयं के निर्भरता प्रबंधन विस्तार का उपयोग करता हूं: http://trapdoor.org/projects/3/ यह आपकी स्थिति में मदद कर सकता है या नहीं, लेकिन यह मेरे लिए अच्छा काम करता है। – Draemon

+0

तो निर्भरता काफी सूक्ष्म है (मुझे लगता है)। आपको _ c.jar' को _use_ 'b.jar' की आवश्यकता है; लेकिन 'c.jar' को _build_' b.jar' की आवश्यकता नहीं है। क्या वह सही है? –

उत्तर

15

आप पहले से ही चींटी का उपयोग करते हैं, तो आपका सर्वश्रेष्ठ दांव निर्भरता प्रबंधन के लिए आइवी उपयोग करने के लिए है।

http://ant.apache.org/ivy/

यह निर्भरता हेरफेर के लिए चींटी कार्यों का विस्तृत समूह प्रदान करता है।

3

बस आपको मायूस करने के लिए: निर्माण प्रणाली के साथ संयोजन में निर्भरता प्रबंधन कठिन है! जब तक आपके पास वास्तव में एक साधारण उदाहरण नहीं है, यह कोई ब्रेनर नहीं है, और आपको कुछ काम निवेश करना होगा।

आप करना चाहते हैं या चींटी का उपयोग करने के है, तो आइवी निश्चित रूप से एक अच्छा विकल्प है। चींटी की आधिकारिक उप-परियोजना होने के नाते, यह अपेक्षाकृत सुचारू रूप से एकीकृत होती है।

+2

मैं भ्रम से बाहर जिस तरह से कर रहा हूँ, लेकिन धन्यवाद ;-) – Ran

1

मैं पिछले 4 साल के लिए आइवी उपयोग कर रहे हैं (इससे पहले कि जिस तरह से यह अपाचे में शामिल हो गए) और किसी भी अफसोस नहीं किया है।

अपने चींटी फ़ाइलों के बारे में ज्यादा जानने के बिना, यह एक निश्चित जवाब देने के लिए एक छोटा सा मुश्किल है लेकिन मुझे लगता है कि है कि परियोजनाओं एक ही बार में निर्माण कर रहे हैं। इसका मतलब यह है कि वे अपनी कलाकृतियों (या जार फ़ाइलों) को केंद्रीय भंडार में व्यक्तिगत रूप से प्रकाशित नहीं कर सकते हैं।

समाधान केंद्रीय (सामान्य पुस्तकालयों) और स्थानीय (आपके प्रोजेक्ट के लिए) दोनों भंडारों का उपयोग करना है। आप मेरी सार्वजनिक परियोजनाओं और विशेष रूप से ivysettings.xml फ़ाइल पर एक नज़र डाल सकते हैं क्योंकि वे वास्तव में इस सिद्धांत का उपयोग करते हैं। बस निर्भरता और चींटी अपने दिन के लिए दिन के निर्माण भारी उठाने के लिए के लिए Maven: दोनों दुनिया का सबसे अच्छा उपयोग करें:

0

वहाँ के लिए एक नया खुला स्रोत का निर्माण प्रणाली है जावा EBuild (features) कहा जाता चींटी/आइवी करने के लिए एक बढ़िया विकल्प है कि के रूप में यह निर्भरता प्रबंधन पर विशेष रूप से अच्छा है।

साइट पर deficiencies of Ant पर कुछ विस्तृत लेख है और यह भी Maven है।

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