2015-06-28 15 views
9

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

प्ले फ्रेमवर्क में इसे प्राप्त करने के लिए अनुशंसित दृष्टिकोण "सबप्रोजेक्ट" अवधारणा है। लेकिन यह स्पष्ट रूप से एक विकल्प नहीं है, कम से कम दो कारणों से:

  1. परियोजनाओं अलग टीमों द्वारा विकसित कर रहे हैं, यही वजह है कि वे वे एक निर्देशिका संरचना
  2. ये 3 मॉड्यूल ("मूल" में स्थित नहीं किया जा सकता है और 2 "प्रोजेक्ट" मॉड्यूल) अलग VCS रिपोज़ (Mercurial)

मेरा वर्तमान समाधान कोर मॉड्यूल बनाने और इसे "प्रोजेक्ट" प्ले एप्लिकेशन में निर्भरता के रूप में प्रदान करने के लिए किया जाना चाहिए। एक यद्यपि इस दृष्टिकोण आंशिक रूप से काम करता है, प्रमुख कमियां देखते हैं:

  1. आप मॉड्यूल में मार्गों फ़ाइल जोड़ते हैं तो उन्हें परियोजना मार्गों
  2. आप कोर मॉड्यूल में नहीं कर सकते जगह विचारों फाइल, क्योंकि Fig.1 के कारण को पार कर जाएगी आप नहीं कर सकते का उपयोग सार्वजनिक संपत्ति
  3. n.1 और 2 नकारात्मक पहलू के कारण, कोर मॉड्यूल में आप नहीं कर सकते जगह नियंत्रकों, क्योंकि आप नहीं कर सकते
  4. स्थिर परिसंपत्तियों (सार्वजनिक निर्देशिका) प्रस्तुत करने के लिए एक दृश्य के निर्दिष्ट मॉड्यूल वितरण में शामिल नहीं है

मुझे दोनों परियोजनाओं में आम टेम्पलेट्स की प्रतिलिपि बनाने के लिए मजबूर होना पड़ता है, मैं व्यावहारिक रूप से सामान्य नियंत्रकों को नहीं लिख सकता जो बहुत परेशान हैं

किसी भी मदद की सराहना करें। शायद यह कोर मॉड्यूल के लिए कुछ प्रकार के अत्यधिक कस्टम निर्माण और प्रकाशित प्रक्रिया में हासिल किया जा सकता है?

उत्तर

1

मुझे लगता है कि आपको रोल 2 परियोजना को अन्य 2 परियोजनाओं के लिए निर्भरता के रूप में नहीं जोड़ना चाहिए। आप कोर प्रोजेक्ट को मूल कक्षाओं और कोर संसाधनों में तोड़ सकते हैं। प्ले फ्रेमवर्क में टेम्पलेट्स और दृश्य संकलित कक्षाएं हैं, इसलिए आप पूरी तरह से एक जार में पैक कर सकते हैं। आपके द्वारा बनाए गए टेम्पलेट को कोर क्लास के साथ पैक किया जाएगा (या आप उन्हें भी तोड़ सकते हैं)। आप इस जार को एक निर्भरता अनुप्रयोग जैसे आर्टिफैक्टरी या नेक्सस में प्रकाशित कर सकते हैं और अन्य परियोजनाओं में आयात कर सकते हैं। संसाधनों के लिए, आप उन्हें webjars करें जैसे पैकेज कर सकते हैं। तो आप उन्हें अपनी अन्य परियोजनाओं के किसी अन्य दृश्य से एक्सेस कर सकते हैं।

+0

आपको बहुत धन्यवाद, यह एक दिलचस्प विचार है, लेकिन क्या आपके पास एक अलग जार में संकलन और पैकिंग संसाधनों (जैसे विचार) को जोड़ने के कुछ विशिष्ट उदाहरण हैं? – YoZH

+0

आपके विचार एक अलग परियोजना में होना चाहिए। आप वास्तव में कैसे विचारों का पुन: उपयोग किया जाएगा? पैक करने के तरीके के बारे में, इसे देखें: http://www.scala-sbt.org/0.12.4/docs/Detailed-Topics/Publishing.html। – Augusto

+0

ठीक है, मेरे पास विचारों का एक सामान्य सेट + स्थिर संपत्तियां (उदा। सीएसएस, जेएस, आईएमजी) हैं जिनका उपयोग इन विचारों द्वारा किया जाता है। और मेरे पास कुछ कोर क्लास और नियंत्रक हैं जो इन विचारों का आह्वान करते हैं। तो, मेरा लक्ष्य उन्हें किसी भी तरह पैकेज करना है * मुझे उन सभी परियोजनाओं में कॉपी करने की आवश्यकता नहीं होगी जहां मैं उनका उपयोग करना चाहता हूं। असल में, ये विचार और संपत्ति एक व्यवस्थापक इंटरफेस बनाती है जो सभी परियोजनाओं के लिए आम है। – YoZH

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