मैं निम्नलिखित संरचना के 3 परियोजनाएं हैं:अपाचे आइवी। सकर्मक पुनः प्राप्त नहीं निर्भरता
App
| |
...
| |
| +--lib
| | |
| | +--...
| |
| +--dist
|
Lib
| |
...
| |
| +--lib
| | |
| | +--sublib-1.0.jar
| |
| +--dist
| |
| +--lib-1.0.jar
|
SubLib
|
...
|
+--dist
|
+--sublib-1.0.jar
निम्नलिखित रिश्ता नहीं है कौन सा:
App <-- Lib <-- SubLib
मैं अपाचे आइवी लता उपयोग कर रहा हूँ App
और Lib
दोनों के लिए निर्भरता को पुनः प्राप्त करने। निर्भरता निम्नानुसार हैं: Lib
की ivy.xml
:
App
की
<ivy-module version = "2.0">
<info organisation = "com.test.lib" module = "lib"/>
<dependencies>
<dependency org = "com.test.sub.lib" name = "sublib" rev = "1.0" conf = "compile->default"/>
</dependencies>
</ivy-module>
ivy.xml
:
<ivy-module version = "2.0">
<info organisation = "com.test.app" module = "App"/>
<dependencies>
<dependency org = "com.test.lib" name = "lib" rev = "1.0" conf = "compile->default"/>
</dependencies>
</ivy-module>
ivysettings.xml
:
<ivysettings>
<settings defaultResolver = "local"/>
<resolvers>
<filesystem name = "local">
<artifact pattern = "${ivy.settings.dir}/SubLib/dist/[artifact]-[revision].[ext]"/>
<artifact pattern = "${ivy.settings.dir}/Lib/dist/[artifact]-[revision].[ext]"/>
</filesystem>
</resolvers>
<modules>
<module organisation = "com.test.ivytest" resolver = "local"/>
</modules>
</ivysettings>
अपेक्षित परिणाम:ivy:retrieve
को क्रियान्वित करने के बाद, ख अन्य संगठनों के sublib-1.0.jar
और lib-1.0.jar
App/lib
वास्तविक परिणाम में उपस्थित होने के लिए: केवल lib-1.0.jar
App/lib
में मौजूद है। App
के लिए उत्पन्न आईवी-रिपोर्ट में sublib
lib
की निर्भरता होने का कोई उल्लेख नहीं है। निर्माण के दौरान चींटी + ivy लॉग में एक तरह का कुछ भी नहीं है।
नोट:lib-1.0.jar
एक वसा-जार के रूप में नहीं बनाया जा रहा है।
इस कॉन्फ़िगरेशन में मुझे क्या याद आ रही है?
अद्यतन
मैं कुछ सोच किया है, और केवल निष्कर्ष मैं के साथ आया था कि इस समस्या वास्तव में गलत कॉन्फ़िगरेशन है। इस तथ्य के आधार पर, कि पारस्परिक निर्भरता को पुनर्प्राप्त नहीं किया गया है, हम सकारात्मक रूप से कह सकते हैं कि lib
को हल करते समय आईवी के पास कोई जानकारी नहीं है। और यह समझ में आता है, क्योंकि Lib/dist
फ़ोल्डर फ़ाइल सिस्टम में कहीं भी हो सकता है। पारस्परिक निर्भरता के बारे में जानकारी रखने का एकमात्र तरीका उस जार के करीब कहीं ivy.xml
संबंधित होगा। जो नहीं है। [ivy:retrieve] local: no ivy file found for com.test.lib#lib;1.0: using default data
लॉग में संदेश द्वारा इसकी पुष्टि की गई है। सूचना को संरक्षित करने का एकमात्र तरीका %user%/.ivy/cache
में कैश डेटा है। वहां उत्पन्न [org]-[artifact]-[conf].xml
फ़ाइलों में निर्भरता जानकारी होती है। इसलिए मैं इसके लिए सही तरीके से काम करने का अनुमान लगा रहा हूं, मुझे ऐप के रिज़ॉल्यूशन स्तर पर कैश का उपयोग करना होगा।
क्या इससे कोई समझ आती है या क्या मैं फिर से गलत हूं?
आईवी: पुनर्प्राप्ति से पहले हल किया जाना चाहिए। आपको क्या त्रुटियां मिलती हैं? क्या "कॉन्फ़िगरेशन गायब" जैसी कुछ है? – cantSleepNow
जो मैं समझने में सक्षम था वह यह है कि यह आवश्यक नहीं है। मैं लॉग में '[ivy: पुनर्प्राप्ति]' अनुभागों के लिए देखता हूं कि यह एक संकल्प करता है। मुझे कोई गलती नहीं है, यह सिर्फ संक्रमणीय जार निर्भरता गायब है। – HighPredator
ठीक है (अद्यतन भाग भी पढ़ रहा है) कृपया आईवी कैश साफ़ कर सकते हैं और इसे फिर से चला सकते हैं। 'Lib' और' sublib' प्रकाशित करने के लिए आप जिस एंटी स्क्रिप्ट का उपयोग कर रहे हैं, उस प्रश्न को भी जोड़ें। – cantSleepNow