2010-10-06 14 views
5

लिखना मैं एक साधारण चींटी कार्य लिखना चाहता हूं जो ग्रहण कार्यक्षेत्र से कुछ जानकारी प्राप्त करने के लिए बातचीत करेगा। मैं विभिन्न ग्रहण API का उपयोग करने में सक्षम होना चाहता हूं (उदाहरण के लिए, IWorkspace)।एक ग्रहण-जागरूक चींटी कार्य

मेरा प्रश्न यह है कि ऐसा करने का सबसे आसान तरीका क्या होगा।

मुझे ग्रहण मंच के उपयोगकर्ता के रूप में उत्कृष्ट ज्ञान है - लेकिन ग्रहण के लिए विकास के साथ कोई भी नहीं। मैं समझता हूं कि, रनटाइम में, मेरे चींटी कार्य को उसी जेआरई के तहत वर्कस्पेस के रूप में बुलाया जाना चाहिए - यह एक प्रतिबंध है जिसे मैं बाध्य करने के लिए तैयार हूं।

मैंने अपने चींटी कार्य को पकड़ने के लिए जावा प्रोजेक्ट बनाकर शुरू किया। मेरा मानना ​​है कि मेरे रास्ते में एकमात्र चीज है कि ग्रहण के जारों पर जेएआर निर्भरता को कैसे परिभाषित किया जाए। मैं स्पष्ट रूप से एक विशिष्ट ग्रहण जार पर निर्भर नहीं होना चाहता क्योंकि ये संस्करण हैं (उदाहरण के लिए, ग्रहण "संसाधन" प्लगइन)। क्या मेरे जावा प्रोजेक्ट बिल्डटाइम पर निर्भर होना संभव है "जो भी वर्तमान जेएआर संसाधन प्लगइन के लिए है" पर निर्भर करता है?

उत्तर

2

मुझे लगता है कि इस लेख काफी ज्यादा पतों आपकी समस्या: http://www.ibm.com/developerworks/rational/library/09/eclipsecustomanttasks/

यह IBM Rational Application डेवलपर के लिए लक्षित है, लेकिन यह एक ग्रहण पर आधारित है और AFAIS वहाँ ज्यादा ज्यादा गैर ग्रहण विशेष यहां नहीं हो रहा है , ग्रहण (प्लगइन परिभाषा आदि लिखना) में कार्य को कैसे उपलब्ध कराया जाए, इस बारे में विनिर्देशों के बारे में कम से कम नहीं।

+0

बिल्कुल वही जो मैं खोज रहा था। धन्यवाद! – Isaac

0

आपको शायद जो करना है, उसके बारे में अधिक कहना चाहिए, क्योंकि आप कई मार्ग ले सकते हैं।

  1. ग्रहण कुछ चींटी कार्य है कि आप अपने निर्माण लिपियों में उपयोग कर सकते हैं प्रदान करता है। Here कुछ हैं। और भी हैं, इसलिए ग्रहण दस्तावेज़ों में "चींटी कार्य" की खोज करें; वे अलग-अलग पृष्ठों में बिखरे हुए हैं। ग्रहण प्राथमिकताएं (विंडो .. संदर्भ, फिर एंटी/रनटाइम का चयन करें, और क्लासपाथ टैब में "योगदान प्रविष्टियां" देखें) आपको एंटी कार्यों की एक सूची दिखाती है जो ग्रहण से ग्रहण किए जाने पर ग्रहण रनटाइम में योगदान देता है; जब तक आप सही जार शामिल करते हैं, तब तक आप इनमें से किसी भी कार्य को स्वयं से बुला सकते हैं।
  2. एंटिस्से को एंट टास्क से शुरू करना संभव है, क्योंकि जावा से एक्लिप्स शुरू करना संभव है। आपको सही जार शामिल करने और सही कॉल करने की आवश्यकता है; आपको ग्रहण को सही तरीके से कॉन्फ़िगर करने की भी आवश्यकता है। "org.eclipse.core.runtime.adaptor.EclipseStarter" आपको कुछ विवरण देना चाहिए।
  3. शायद आप एक या अधिक चर का उपयोग कर सकते हैं ग्रहण एंटी (या कोई अन्य प्रोग्राम) लॉन्च करते समय उपयोग के लिए परिभाषित करता है। एक बाहरी उपकरण कॉन्फ़िगरेशन (रन मेनू के नीचे) बनाने का प्रयास करें - एक एंट बिल्ड का चयन करें और इसे तर्क (मुख्य टैब से) या पर्यावरण चर (पर्यावरण से) टैब के साथ अनुकूलित करने का प्रयास करें। दोनों आपको ग्रहण चर तक पहुंच प्रदान करते हैं। लेकिन निश्चित रूप से ये केवल वैल्यू हैं जो आप अपनी चींटी स्क्रिप्ट में जा सकते हैं, किसी भी चीज को संभाल नहीं सकते हैं जिस पर आप एक विधि का आह्वान कर सकते हैं।

आप क्या नहीं कर सकते: मुझे पूरा यकीन है कि जब ग्रहण एंट लॉन्च करता है, तो यह हमेशा एक अलग वीएम में होता है, जिसमें ग्रहण में वापस जाने का कोई तरीका नहीं होता है।

तो शायद आपको यह कहना चाहिए कि आप क्या करना चाहते हैं।

+0

हाय लाडलेस्टीन, हाँ, जैसा कि आपने उपर्युक्त (1) में उल्लिखित कार्यों के बारे में जानकारी दी है। मैं जो चाहता हूं वह वास्तव में सीखना है कि चींटी कार्यों को लिखने के बारे में कैसे जाना है, न कि किसी विशेष कार्यक्षमता को कैसे कार्यान्वित करना है (जैसा कि मुझे पता है कि एक्लिप्स द्वारा निर्मित कई कार्यक्षमताएं हैं)। तो, कार्यस्थल में सभी परियोजनाओं की एक अल्पविराम से अलग सूची, एक चींटी संपत्ति में पुनर्प्राप्त करने के मामले पर विचार करें (हाँ, मुझे पता है कि Ant4Eclipse ऐसा करता है लेकिन मैं इसे प्राप्त करने के लिए एक ग्रहण-एपीआई-आधारित दृष्टिकोण की तलाश में हूं) । – Isaac

+0

@Isaac, जो आपको बताता है कि आप क्या खोज रहे हैं। मुझे लगता है कि आप ऊपर वर्णित ग्रहण स्टार्टर क्लास को देखना चाहते हैं। डॉक्स http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/adaptor/EclipseStarter.html पर शुरू होता है। – Ladlestein

+0

धन्यवाद हालांकि मुझे लगता है कि मैं थोड़ा अस्पष्ट था। ग्रहण स्टार्टर क्लास मुझे वर्कबेंच को फायर-अप करने में मदद करेगी, मेरी बात करेगी और बाहर निकल जाएगी। यह उपरोक्त आपके उत्तर में विकल्प (2) होगा। मैं वास्तव में क्या चाहता हूं कि सीखना सीखें कि * * चलने वाले * ग्रहण उदाहरण के तहत चलने वाले कार्यों को कैसे लिखना है - जो आपके उत्तर में श्रेणी (1) के अंतर्गत आते हैं। – Isaac

1

तो, आप एक चींटी कार्य चाहते हैं जो ग्रहण के भीतर चलता है। और जैसा कि आप कहते हैं, यह स्पष्ट है कि वे कार्य ग्रहण API का उपयोग कर रहे हैं। इस पल के रूप में, मैं वास्तव में समझ में नहीं आता कि वे इसे कैसे कर रहे हैं। मैंने उनमें से कुछ के स्रोत को देखा है और मेरे पास अभी भी प्रश्न हैं।

ग्रहण द्वारा योगदान किए गए सभी चींटी कार्यों के स्थानों को खोजने के लिए, org.eclipse.ant.core.antTasks के लिए प्लग-इन खोज करें। जब मैं ऐसा करता हूं, तो मुझे बीस या इतने एक्सटेंशन दिखाई देते हैं, जिनमें से कई कई कार्यों को परिभाषित करते हैं।

यदि आपको प्लगइन के लिए स्रोत बंडल मिलता है जो इन कार्यों में से किसी एक को योगदान देता है, तो आप इसके स्रोत को देख सकते हैं। RefreshLocalTask ​​org.eclipse.core.resources में है; दुर्भाग्यवश, जब मैं एक स्रोत प्रोजेक्ट के रूप में अपने कार्यक्षेत्र में इस बंडल को आयात करता हूं, तो चींटी कार्यों का स्रोत सही ढंग से लिंक नहीं होता है।उनके लिए एक अलग जार (बंडल के अंदर) है, और, जबकि स्रोत बंडल में है, यह स्पष्ट नहीं है कि जार कैसे संकलित किया जाता है। अपशॉट यह है कि मेरे पास वर्कस्पेस में एंटी टास्क स्रोत संकलित नहीं है।

आप एंट टास्क स्रोत के लिए Google भी कर सकते हैं; 3.6.0 sourceRefreshLocalTask के लिए यहां है।

वैसे भी, स्रोत में आप org.eclipse.core.resources.ResourcePlugin पर कॉल देख सकते हैं जो आपको शायद जो चाहिए उसे चित्रित कर सकते हैं।

आह, मैं विस्तार बिंदु विवरण में देखता हूं - उन खोज परिणामों में से एक पर राइट-क्लिक करें और "विवरण दिखाएं" चुनें, या मैनिफेस्ट संपादक से वहां जाएं - कि एक ध्वज जिसे आप सेट कर सकते हैं, "eclipseRuntime" ; पाठ का तात्पर्य है कि यदि यह सेट किया गया है, तो ग्रहण उसी कार्य में कार्य लॉन्च करेगा।

+1

यह मेरे लिए सही रास्ते पर लगता है। एक नया ग्रहण प्लग-इन बनाएं (इसलिए एक नया प्लग-इन प्रोजेक्ट बनाएं, न केवल जावा प्रोजेक्ट)। निर्भरता जोड़ें ('MANIFEST.MF'' को खोलें (मौजूदा) ग्रहण प्लग-इन जिन्हें आप कॉल करना चाहते हैं। यदि आप चाहें तो संस्करणों में "wiggle room" देने के लिए आप निर्भरता घोषणाओं को संपादित कर सकते हैं। (ध्यान दें कि ग्रहण 'कोर' बनाम 'यूई' में अच्छी तरह से अलग है, इसलिए आप जो कुछ भी चाहते हैं उसे बिना किसी यूआई के लाने या बातचीत करने में सक्षम होना चाहिए।) क्या आपका नया प्लग-इन एक एक्सटेंशन में योगदान देता है विस्तार बिंदु Ladlestein की पहचान की। सौभाग्य! –

+0

मैं बस कुछ मिनट पहले निष्कर्ष पर पहुंचा, कि मैं वास्तव में हासिल करना चाहता हूं, केवल एक साधारण जार छोड़कर हासिल नहीं किया जा सकता है; ग्रहण या ग्रहण के तहत जो कुछ भी काम करता है उसे ओएसजीआई के अनुरूप होना चाहिए और प्लगइन्स/फीचर्स कैसे डिज़ाइन किए गए हैं - इसलिए मुझे कोई अपवाद नहीं होना चाहिए। आप दोनों को धन्यवाद! – Isaac

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