2015-12-08 7 views
9

पर तैनात ग्रैडल/स्प्रिंग ऐप के लिए कोडबेस कारक (12-कारक ऐप घोषणापत्र से) का सम्मान करना मेरा प्रश्न 12 कारक ऐप्स घोषणापत्र के पहले कारक से संबंधित है: कोडबेस। (http://12factor.net/codebase देखें)।क्लाउडफाउंड्री या हेरोकू

टी एल; डॉ:

इस पहलू वहाँ codebases के बीच एक से एक के लिए संबंध है और तैनात है, तो इस मामले में, आपको दोनों ऐप्लिकेशन

के लिए एक ही codebase (भंडार) का उपयोग नहीं करना पड़ेगा कहा गया है

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

मेरे मौजूदा सेटअप:

  • डोमेन मॉडल (जेपीए इकाई वर्ग) रेपो
  • वेबसाइट आवेदन रेपो
    • डोमेन मॉडल: मैं वर्तमान में तीन "उच्च-स्तरीय" GitHub पर रिपोजिटरी है निर्देशिका/Gradle परियोजना (git subtree pull/push के साथ शामिल)
  • बैच आवेदन रेपो
    • डोमेन मॉडल निर्देशिका/Gradle परियोजना (git subtree pull/push के साथ शामिल)

कृपया ध्यान दें कि डोमेन मॉडल रेपो अलग से (जैसा कि ऊपर उल्लेख) रहता है लेकिन है वेबसाइट और बैच एप्लिकेशन repos दोनों के भीतर भी घोंसला। मैं इस डोमेन मॉडल रेपो को निर्देशिका के रूप में और अन्य दो रिपो के भीतर एक ग्रेडल प्रोजेक्ट को शामिल करने के लिए git subtree pull/push का उपयोग करता हूं। इसका कारण यह है कि हेरोोकू खुद को रिपो से कोड बनाता है।

यह सब बहुत कठिन और त्रुटि-प्रवण है।

क्या कोई बेहतर समाधान की सलाह दे सकता है?

+0

मैं वास्तव में अपने प्रश्न समझ में नहीं आता। क्या आप इसे तोड़ सकते हैं और स्पष्ट हो सकते हैं? – polka

उत्तर

2

मैं Bintray पर एक निजी Maven रेपो के लिए आम कोड प्रकाशित करेंगे और उसके बाद अन्य उपभोक्ता क्षुधा है कि निजी रेपो जोड़ सकते हैं और एक निर्भरता के रूप में आम मॉड्यूल निर्दिष्ट है। यह गारंटी नहीं देता है कि दोनों एक ही संस्करण पर निर्भर होंगे लेकिन इसे the Maven Versions Plugin जैसे टूल का उपयोग करके बाहरी प्रक्रियाओं के माध्यम से आसानी से प्रबंधित किया जा सकता है। लेकिन आप दो ऐप्स के डोमेन मॉडल को कम से कम जोड़े जाने के लिए एक और अधिक लचीला क्रमिकरण प्रणाली जोड़ना चाहेंगे।

-1

मैं एक पैकेज में डोमेन मॉडल को बंडल करूँगा (सुनिश्चित नहीं है कि इस तरह के बंडलों के लिए जावा/ग्रेडल क्या बोलता है, रूबी में यह एक मणि होगा) और इसे निर्भरता के रूप में उत्पादन पर स्थापित करें। अन्यथा एक git submodule भी एक विकल्प

+0

हाय। क्या आप कृपया बता सकते हैं कि 12-कारक एप्लिकेशन घोषणापत्र का पालन कैसे करें।कृपया यह भी बताएं कि उपरोक्त बोल्ड में आवश्यकता को कैसे पूरा किया जाता है यानी दोनों अनुप्रयोगों को किसी भी समय सामान्य कोड के समान संस्करण का उपयोग करने की आवश्यकता होती है। – balteo

+0

एक बंडल निर्भरता प्रभावी रूप से ऐप कोडबेस का हिस्सा नहीं होगी। सामान्य पुस्तकालयों के अपडेट एप कोडबेस अपडेट के बजाय निर्भरता अपडेट द्वारा प्रबंधित किए जाएंगे। जहां तक ​​मुझे पता है कि यह मुख्य कारण निर्भरताओं में से एक है, भले ही वे आम तौर पर तीसरे पक्ष के कोड को आयात और उपयोग करने के लिए उपयोग किए जाते हैं। – Achilles