2013-02-22 13 views
5

मैं सिर्फ एक निर्माण प्रणाली के रूप में मेवेन का उपयोग कर जीडब्ल्यूटी विकास के साथ शुरू कर रहा हूं।क्या कोई GWT मेवेन प्रोजेक्ट संरचना है, जो जिम्मेदारियों को मिश्रित नहीं करती है?

मैं जावा + फ्लेक्स दुनिया से आया हूं, इसलिए स्वाभाविक रूप से मेरे पास क्लाइंट साइड मॉड्यूल और सर्वर साइड मॉड्यूल हैं जो साफ़ रूप से अलग हैं।

जीडब्ल्यूटी के सर्वोत्तम प्रथाओं में खोदने और गहरे और गहरे खुदाई के दौरान, मेरे लिए जीडब्ल्यूटी परियोजनाओं की डिफ़ॉल्ट कॉन्फ़िगरेशन जिम्मेदारियों की कुल गड़बड़ी की तरह अधिक से अधिक महसूस करता है। विशेष रूप से जब यह बहु-मॉड्यूल परियोजनाओं की बात आती है।

मुझे समझ में आया, कि सम्मेलन में कहा गया है कि सर्वर-साइड लॉजिक "सर्वर" पैकेज में "साझा" में साझा कोड और "क्लाइंट" पैकेज में जीडब्ल्यूटी कंपाइलर द्वारा HTML + जावास्क्रिप्ट में संकलित सामग्री है। और सभी कोड src/main/java पर जाता है। अब तक सब ठीक है।

कोई फर्क नहीं पड़ता कि मैं इसे कैसे देखने की कोशिश करता हूं ... मेरे लिए "क्लाइंट" पैकेज में सामान बस मृत कोड है। यहां तक ​​कि यदि जावा कंपाइलर इसे कक्षाओं में संकलित करता है, तो वर्गों को रनटाइम पर कभी भी उपयोग नहीं किया जाता है और संकलन चरण में जीडब्ल्यूटी कंपाइलर को इनपुट प्रदान करने के लिए केवल आवश्यकता होती है। तो अगर यह जावा की तरह दिखता है, तो यह वास्तव में नहीं है और केवल जावा जैसा दिखता है। यह एक ही जार के अंदर "लाइव" कोड के रूप में रखने के लिए गंदे लगता है।

इस बनाने के अधिक भावना की तरह एक Maven संरचना नहीं चाहेंगे: जावा-संकलक प्लगइन उपयोग src/मुख्य/जावा और src/मुख्य/साझा और GWT संकलक का उपयोग करने के

/src/ 
/src/main/ 
/src/main/java 
/src/main/shared 
/src/main/gwt 

और के लिए src/main/gwt और src/main/shared?

यह भी बेहतर होगा अगर निर्माण दो प्रकार के कलाकृतियों का उत्पादन करेगा ... सामान्य "जार" जिसमें स्रोत/मुख्य/जावा और स्रोत/मुख्य/साझा और दूसरा "gwt" होता है, जिसमें शामिल है वर्ग/स्रोत/स्रोत/gwt के स्रोत और src/main/shared।

मैं कुछ मिश्रित जार पर निर्भरता नहीं जोड़ूंगा, लेकिन यह तय कर सकता हूं कि मैं कुछ जीडब्ल्यूटी घटक आयात करना चाहता हूं या यदि मैं कुछ सर्वर-साइड कार्यक्षमता आयात करना चाहता हूं।

अगला बात यह है कि GWT डिफ़ॉल्ट src/मुख्य/जावा ... एक्सएमएल & & संसाधन में एक्सएमएल, संसाधनों और अन्य सामान रखने के लिए है! = जावा ;-)

या वहां के लिए एक असली कारण है यह सब, कि मैंने अभी तक अभी तक महसूस नहीं किया है ... या क्या मुझे बस गंदे होने लगते हैं और इस तरह की चीजों के बारे में चिंतित नहीं हैं?

क्रिस

उत्तर

3

मैं भी सर्वर साइड कोड से GWT क्लाइंट साइड कोड को अलग करने की कोशिश की है। जिस विधि का मैंने उपयोग किया है वह 2 उप-परियोजनाओं के साथ एक शीर्ष-स्तरीय प्रोजेक्ट है, एक सर्वर-साइड के लिए, एक क्लाइंट-साइड के लिए। शीर्ष-स्तरीय प्रोजेक्ट में एक उप-प्रोजेक्ट के लिए एक तत्व युक्त pom.xml है।

क्लाइंट-साइड प्रोजेक्ट में src/main/java में gWT जावा स्रोत और बाकी वेबपैप फ़ाइलों को src/main/webapp में शामिल किया गया है। सर्वर-साइड प्रोजेक्ट में केवल सर्वर-साइड कोड होता है।

शायद सबसे कठिन समाधान नहीं है लेकिन कम से कम एक स्पष्ट अलगाव है।

+0

मैं सिर्फ एक परिदृश्य पर चर्चा कर रहा था जिसमें मेरे सर्वर पैकेज में नमूना सिंगलटन था और क्लाइंट साइड कोड से इस पर एक विधि को कॉल करना आसान था। तो मेरे लिए स्वच्छता की मंजूरी होगी 3 परियोजनाएं (ग्राहक, साझा, सर्वर) ... लेकिन मुझे लगता है कि यह चीजों को नाटकीय रूप से उड़ा देगा। –

+0

मैं कभी भी साझा करने से परेशान नहीं हूं, मुझे जीडब्ल्यूटी आरएमआई पसंद नहीं है, जो बहुत भ्रमित है। मैं इसके बजाय क्लाइंट/सर्वर comms के लिए एक्सएमएल का उपयोग करें। जीडब्ल्यूटी में एक्सएमएल हैंडलिंग है। – NickJ

5

मैं कुछ समय पहले इसी निष्कर्ष पर आया था, और शुरू करने में सहायता के लिए कुछ आर्केटीप्स बनाए: https://github.com/tbroyer/gwt-maven-archetypes (announcement)।

उन आर्केटाइप में अभी भी *.gwt.xml et al है। src/main/java में, क्योंकि ग्रहण के लिए Google प्लगइन उन्हें कहीं और डालने का समर्थन नहीं करता था (मैंने सुना है कि इसे हाल के संस्करण में ठीक किया गया है लेकिन अभी तक चेक नहीं किया गया है)।

+0

मुझे लगता है कि वास्तव में एक साफ समाधान होगा यदि gwt-maven-plugin को कस्टम पैकेजिंग प्रकार (उदाहरण के लिए) "gwt" प्रदान करने के लिए बढ़ाया गया था। इस तरह के एक gwt-artifact के अंदर मैं जार और gwt कलाकृतियों के लिए निर्भरता हो सकता है और डिफ़ॉल्ट कोड स्थान होगा (उदाहरण के लिए) src/main/gwt। इस मामले में मैंने जीडब्ल्यूटी छद्म-जार और असली जावा जार मिश्रण नहीं किया है, लेकिन मैं जीडब्ल्यूटी से वास्तविक जावा कोड का संदर्भ दे सकता हूं। मेरे सर्वर क्लासपाथ में मेरे पास मृत वर्ग नहीं हैं। और कोई भी तुरंत देखेगा कि यह वास्तव में जीडब्ल्यूटी कोड है। –

+0

मैं ऐसी चीज पर काम कर रहा हूं (यदि आप इसे चाहते हैं तो मेरे गिटहब पर शुरुआती प्रोटोटाइप)। आप अभी भी उसी मैवेन मॉड्यूल में क्लाइंट और सर्वर को मिश्रित नहीं करेंगे (इसके बारे में सोचें: जीडब्ल्यूटी को दोनों स्रोतों और संकलित कक्षाओं की आवश्यकता है, इसलिए आपको एक अलग स्रोत के साथ मेवेन-कंपाइलर-प्लगइन के माध्यम से आदर्श रूप से जावैक कॉल करना होगा पथ-आसान- और क्लासपाथ आपके सर्वर-साइड के लिए; कुछ सर्वर-साइड घटकों और जीडब्ल्यूटी कंपाइलर या देवमोड के बीच असंगतताएं भी हैं, इसलिए आप कुछ डीपी को सर्वर-केवल और कुछ अन्य के रूप में साझा करना चाहते हैं; चीजों को करने का मैवेन रास्ता नहीं, बस मॉड्यूल को विभाजित करें) –

+0

अरे ... मुझे दो चीजों को अलग करने में खुशी होगी :-) तो आपके परिवर्तनों के साथ, क्या यह सेटअप gwt कलाकृतियों और जार कलाकृतियों के साथ होगा? यह बहुत अच्छा होगा। बस अपने जीथब रेपो पर एक नज़र डालें ... अच्छा यह वास्तव में एक "प्रारंभिक प्रोटोटाइप" है ;-) –

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