2012-11-07 19 views
11

में तीसरे पक्ष के बंडलों वाली निर्देशिका का उपयोग कैसे करें, अतीत में, हमारे पास फाइल सिस्टम पर हमारे बंडल और फीचर्स थे और उन्हें 'निर्देशिका' स्थान के साथ एक लक्ष्य परिभाषा फ़ाइल के माध्यम से एक्लिप्स में उपलब्ध कराया गया था। इस तरह, ग्रहण में निर्यात विज़ार्ड के साथ उनका उपयोग करना आसान था।टाइको बिल्ड

अब मैं टाईको के साथ eclipse-plugin बनाने की कोशिश कर रहा हूं जिसमें तृतीय पक्ष निर्भरताएं हैं, उदा। javax.vecmath और org.apache.commons.math

जो मुझे पता है, टाइको बिल्ड में निर्भरता प्राप्त करने का सबसे अच्छा तरीका एक पी 2 भंडार के माध्यम से है। तो मैं ग्रहण बंडलों के लिए एक का उपयोग कर रहा हूँ। लेकिन मेरे तीसरे पक्ष के बंडलों के लिए, ऐसा लगता है कि कोई पी 2 भंडार उपलब्ध नहीं है।

तो मेरा सवाल है: मैं आसानी से जेएआर (वीसीएमएथ, कॉमन्स-गणित) को पी 2 रिपोजिटरी में कैसे प्राप्त करूं?

मैंने सोचा कि मैं Tycho के साथ एक पी 2 भंडार का निर्माण कर सकता हूं, लेकिन जब मैं Tycho में तीसरे पक्ष के बंडलों तक नहीं पहुंच सकता तो यह कैसे करें? मैंने एक लक्ष्य परिभाषा का उपयोग करने की कोशिश की, लेकिन Tycho केवल पी 2 भंडार के लिंक का समर्थन करता है, न कि निर्देशिका या प्रतिष्ठानों। क्या मैवेन/टाइको बिल्ड में मेरी तीसरी पार्टी निर्भरताओं का उपयोग करने के अन्य तरीके हैं?

उत्तर

0

आपके प्रश्न के मुताबिक, तीसरी पार्टी निर्भरता पहले से ही बंडल हैं। यह अच्छा है – जो कुछ भी करने के लिए बाकी है, वह बंडलों के लिए पी 2 मेटाडेटा उत्पन्न करना है।

यह Features and Bundles Publisher application के माध्यम से आसानी से किया जा सकता है। नतीजा एक पी 2 भंडार है। जाहिर है, आप नहीं चाहते हैं कि आपके सभी डेवलपर्स को टाइको बिल्ड चलाने के लिए स्थानीय रूप से ऐसा करना है, इसलिए आपको प्रकाशक एप्लिकेशन का परिणाम वेब सर्वर पर रखना चाहिए। फिर, अपनी परियोजना की लक्षित फ़ाइल में एक http यूआरएल के माध्यम से बंडल का संदर्भ लें।

+0

यह एक पी 2 रेपो बनाने के लिए सबसे आसान और सबसे तेज़ तरीका था। सभी का धन्यवाद। – Timo

+4

मैं असहमत हूं। आपको साइट को मैन्युअल रूप से उत्पन्न करना होगा और यदि जार बंडल नहीं हैं तो आपको स्वयं को "बंडल" करना होगा। यह सब गूढ़, बोझिल है और पी 2-मेवेन-प्लगइन (जो नीचे उल्लिखित है) का उपयोग करके आसानी से स्वचालित किया जा सकता है। मैं पी 2-मेवेन-प्लगइन का लेखक हूं और मैंने इसे केवल कोड किया क्योंकि मुझे "विशेषताएं और बंडल प्रकाशक एप्लिकेशन" का उपयोग करने में वास्तव में बोझिल लगता है। पी 2-मेवेन-प्लगइन आज़माएं और आप इसे किसी अन्य चीज़ की तुलना में अधिक आसान मानेंगे: https://github.com/reficio/p2-maven-plugin –

+0

हाँ, मैं सहमत हूं कि पी 2-मेवेन-प्लगइन सबसे अच्छा समाधान जैसा दिखता है । एक्लिप्स/आरसीपी परियोजनाओं में तीसरे पक्ष की निर्भरताओं से निपटना वास्तव में ऐसा दर्द है। ऐसा लगता है कि पी 2-मेवेन-प्लगइन इस दर्द को कहीं भी एक सूची को बनाए रखने और सीआई बिल्ड से पी 2 अपडेट साइट प्रकाशित करने के लिए महत्वपूर्ण रूप से कम कर सकता है ताकि हम इसे हमारे सभी टाइको बिल्डों में उपयोग कर सकें। – Kris

11

कुछ अलग अलग विकल्प ...

P2 प्लगइन

उपयोग p2-maven-plugin बंडलों में अपने सभी गैर OSGi निर्भरता लपेट, और एक p2 भंडार बनाने के लिए।

मैंने पी 2-मेवेन-प्लगइन की कोशिश नहीं की है (यह तब मौजूद नहीं था जब मैं अपना वर्तमान प्रोजेक्ट स्थापित कर रहा था)। इसका कार्यान्वयन टाइको पर आधारित है, लेकिन आप पाते हैं कि यह आपकी समस्या को हल करने के लिए एक और अधिक सुविधाजनक तरीका प्रदान करता है, केवल टाइको प्लगइन्स की तुलना में।

बंडल प्लगइन

उपयोग maven-bundle-pluginको रैप अपने गैर OSGi निर्भरता (निर्भरता प्रति एक आवरण पोम), और अपने भंडार में इसे स्थापित। मुझे लगता है कि कॉमन्स-गणित पहले से ही एक निर्भरता है, इसलिए आपको केवल वीसीएमएथ लपेटने की आवश्यकता हो सकती है। फिर आप उन टाइपो-आधारित पोम फ़ाइलों के <dependencies> में उन निर्भरताओं को सूचीबद्ध कर सकते हैं।

इस दृष्टिकोण का लाभ है कि आपको अपनी परियोजना बनाने के लिए केवल एक पी 2 भंडार स्थापित करने की आवश्यकता नहीं है। नुकसान यह है कि आपकी बंडल परियोजनाओं में प्रबंधन निर्भरता अब MANIFEST.MF फ़ाइल को संशोधित करने का मामला नहीं है: आपको भी पोम को अपडेट करने की आवश्यकता हो सकती है।

बंडल प्लगइन और टाइको

यदि आप OSGi बंडलों में अपनी निर्भरता लपेटकर के लिए बंडल प्लगइन दृष्टिकोण का उपयोग, यह अभी भी, वैसे भी उन निर्भरता के लिए एक p2 भंडार स्थापित करने के लिए उपयोगी हो सकता है इस सरल रूप में ग्रहण पीडीई में लक्ष्य मंच स्थापित करना।

ऐसा करने के लिए, आप एक पी 2 भंडार में निर्भरताओं को इकट्ठा करने के लिए एक नई टाइको-आधारित परियोजना बना सकते हैं: यानी निर्भरताएं जो पहले से ही बंडल हैं, गैर-ओएसजीआई निर्भरताओं के लिपटे संस्करणों के साथ।इस तरह, प्रोजेक्ट जो पी 2 रिपोजिटरी बनाता है, अपने पोम में लपेटा निर्भरता सूचीबद्ध करता है, और आपकी बंडल परियोजनाएं पी 2 भंडार का उपभोग कर सकती हैं, बिना किसी निर्भरता को उनके पोम्स में सूचीबद्ध किए।

यह वह दृष्टिकोण है जिसका मैं उपयोग कर रहा हूं। विशेष रूप से, मैं आधार सुविधा को परिभाषित करने के लिए eclipse-feature प्रोजेक्ट का उपयोग कर रहा हूं जिसमें सभी तृतीय-पक्ष निर्भरताएं शामिल हैं। मेरे पास पैकेजिंग प्लगइन पर <deployableFeature> कॉन्फ़िगरेशन विकल्प भी true पर सेट है, जो लक्ष्य निर्देशिका में एक पी 2 रिपोजिटरी बनाएगा। यह सुविधा मेरे सामान्य ग्रहण उदाहरण में स्थापित की जा सकती है, जो वर्तमान ग्रहण प्लेटफ़ॉर्म को लक्षित प्लेटफ़ॉर्म के रूप में उपयोग करना आसान बनाता है। इसे पी 2 रिपोजिटरी के रूप में भी इस्तेमाल किया जा सकता है जिसे टाइपो बिल्ड (यानी मेरे कोड द्वारा) में कहीं और इस्तेमाल किया जा सकता है, या ग्रहण .target फ़ाइल में एक भंडार के रूप में उपयोग किया जा सकता है।

eclipse-feature Tycho 0.13.0 में सबसे अच्छा पैकेजिंग प्रकार प्रतीत होता था। हाल के संस्करणों में एक और अधिक उपयुक्त पैकेजिंग प्रकार हो सकता है।

+0

इसके बजाय यह उत्तर इस प्रश्न का उत्तर दें: http://stackoverflow.com/q/29664505/1523648 – oberlies

1

एक अच्छी जगह p2 रेपोस में 3 पार्टी बंडल जार देखने के लिए ग्रहण की कक्षा

http://download.eclipse.org/tools/orbit/downloads/

commons.math वहाँ में है।

अपने 3 पार्टी OSGi बंडल एक p2 रेपो में उपलब्ध नहीं है, लेकिन एक Maven रेपो जैसे

http://search.maven.org/

आप टायछो के pomDependency का उपयोग कर सकते में हैं = पर विचार स्विच:

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

+0

मुझे पहले से कुछ मिनट पहले कक्षा मिली, यह वास्तव में सुविधाजनक है। दूसरी सलाह दिलचस्प लगती है, धन्यवाद। – Timo

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