2009-01-30 14 views
7

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

जो पिछले प्रतिबद्ध के आधार पर, .classpath प्रवेश किया जा सकता है:

<classpathentry kind="lib" path="lib/swt/swt-win32.jar"/> 

या

<classpathentry kind="lib" path="lib/swt/swt-carbon.jar"/> 

या

<classpathentry kind="lib" path="lib/swt/swt-gtk.jar"/> 

ऐसा लगता है कि पुस्तकालयों परस्पर अनन्य हैं, यानी आप उन्हें एक साथ में शामिल नहीं कर सकते हैं और एसडब्ल्यूटी को इसे बाहर करने दें। इसलिए हमें उन्हें किसी भी प्लेटफ़ॉर्म के लिए फ़िल्टर करने की आवश्यकता है ...

क्या किसी के पास यह कैसे करना है इस पर कोई विचार है? मेरा प्रारंभिक विचार इसे अपनी ".classpath-swt" फ़ाइल (VCS द्वारा अनदेखा) में विभाजित करना था, इसे एंटी का उपयोग करके स्वतः उत्पन्न करें और इसे मुख्य .classpath में शामिल करें, लेकिन ऐसा लगता है कि ग्रहण विभाजन को समर्थन देने में सहायता नहीं करता है क्लासपाथ फ़ाइल।

हमारा वर्तमान कार्य-आसपास है। क्लासपाथ को छोड़ने से बचने के लिए जब तक कि हमने वास्तव में निर्भरताओं को नहीं बदला है, हालांकि इसका अभी भी मतलब है कि कई लोगों को प्रत्येक बार अपने विकास वातावरण को ठीक करना होगा। क्लासपाथ बदल गया है।

कोई सुझाव बहुत सराहना की जाएगी, यह नहीं है जब तक कि "ग्रहण का उपयोग नहीं करते" के रूप में इस इस परियोजना :) के लिए एक विकल्प नहीं है

उत्तर

9

ग्रहण ताकि आप रख सकते हैं आप classpath चर निर्धारित करने देगा .classpath वही है, लेकिन प्रत्येक डेवलपर मंच के अनुसार अपने ग्रहण को कॉन्फ़िगर करेगा। आप कम से कम .classpath फ़ाइल संस्करण कर सकते हैं। आपको उस निर्देशिका संरचना को बदलना होगा जहां आप अपने एसडब्ल्यूटी जार को उस चीज़ पर संग्रहीत करते हैं जहां जार का नाम प्रति प्लेटफॉर्म नहीं बदलता है। यह मेनू में पाया जा सकता:

SWTJARDIRECTORY/ 
    WIN32/ 
     SWT.JAR 
    CARBON/ 
     SWT.JAR 
    GTK/ 
     SWT.JAR 

पूर्व "विंडो> वरीयताएँ-> जावा> पथ बनाएँ"।

SWT_PLATFORM="SWTJARDIRECTORY/GTK", set by developer in Eclipse 

.classpath

SWT_PLATFORM/SWT.JAR 
+0

वही था जो मैं ढूंढ रहा था, धन्यवाद! – seanhodges

+0

यह XML में कैसे दिखता है? एक्सएमएल में चर के वास्तविक उपयोग को देखने के लिए यह बहुत उपयोगी होगा (और आपको यह जानने के लिए समय बचाता है कि ग्रहण एक्सएमएल चर का विश्लेषण कैसे करता है) – Gubatron

+0

ऐसा लगता है कि आपको एक चर "जावा बिल्ड पथ" > अपने निर्माण पथ में इसका उपयोग करने के लिए वेरिएबल> विस्तार करें) जोड़ें। आपके एक्सएमएल में var पर प्रकार सेट होगा: '' – idbrii

0

कैसे बस अपने उदाहरणों विन्यस्त और अपने वातावरण में से एक घटक के लिए आप अपने स्रोत नियंत्रण में रखने के बारे में नहीं है?

वैकल्पिक रूप से आप प्रत्येक वातावरण के लिए एक क्लासपाथ फ़ाइल स्टोर कर सकते हैं, शायद किसी अन्य निर्देशिका में और एक चींटी फ़ाइल में यानी build-setup-env.xml फ़ाइल में आप बस प्रत्येक वातावरण के लिए एक लक्ष्य प्राप्त कर सकते हैं जो सही एक को कॉपी करता है। स्रोत नियंत्रण में इसकी एक प्रति रखने के लिए आपको इसे अपडेट होने पर वापस कॉपी करना होगा।

1

आपके पास इन पुस्तकालयों को प्रत्येक परियोजना में रखे जाने के बजाय एक अलग, आसानी से पहचाने जाने योग्य परियोजना में होना चाहिए।

उदा। "00-swt-provider" नामक एक प्रोजेक्ट बनाएं (इसलिए यह शीर्ष पर जाता है) और इसे "00-swt-provider-carbon", "00-swt-provider-win32" या "00-swt-provider" में से किसी एक को संदर्भित करने दें -gtk "।

इनमें से कोई भी दिए गए प्लेटफॉर्म के लिए उचित देशी पुस्तकालयों का निर्यात करता है और एकमात्र लिंक 00-swt-provider में है। वास्तविक परियोजना केवल इस मेटा परियोजना का संदर्भ देती है।

हम आंतरिक रूप से इसका एक संस्करण उपयोग करते हैं - यह हमारे लिए अच्छा काम करता है।

+0

यह एक अच्छा विचार है यदि आपके पास एक से अधिक प्रोजेक्ट हैं, क्योंकि आप अपना SWT सेट कर सकते हैं एक ही चरण में सभी परियोजनाओं के लिए निर्भरता। लेकिन हमारे पास केवल एक परियोजना है जो एसडब्ल्यूटी पर निर्भर करती है, इसका मतलब यह होगा कि 1 से 5 तक परियोजनाओं की संख्या में वृद्धि होगी। मुझे लगता है कि क्लासपाथ चर इसके लिए एक स्वच्छ समाधान है। – seanhodges

0

एसडब्ल्यूटी द्वारा .classpath फ़ाइल का संस्करण नहीं करता है, लेकिन संस्करणों द्वारा कई अलग .classpath_ * ऑपरेटिंग सिस्टम और विंडो सिस्टम संलग्न के साथ फ़ाइलें, उदा। .classpath_win32_win32। इस प्रकार जब आप भंडार से स्रोतों की जांच करते हैं तो आपको उचित क्लासपाथ फ़ाइल को .classpath पर कॉपी करने और अपनी प्रोजेक्ट को पुन: संकलित करने की अपेक्षा की जाती है।

+0

एक neater समाधान के लिए @ basszero की टिप्पणी देखें। हमने एकाधिक .classpaths पर विचार किया लेकिन फैसला किया कि इससे तोड़ने की बहुत सारी संभावनाएं पैदा होंगी, क्योंकि एक प्लेटफ़ॉर्म पर कोई व्यक्ति अपने क्लासपाथ में कुछ जोड़ सकता है, जिससे अन्य लोगों को पुराना छोड़ दिया जा सकता है। – seanhodges

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