2012-11-14 6 views
8

का उपयोग करते समय एकाधिक मेवेन कलाकृतियों को जारी करना मैं थोड़ी देर के लिए खोज कर रहा हूं और नेस्टेड गिट सबमिड्यूल का उपयोग करते समय मेवेन मॉड्यूल जारी करने के लिए कोई कामकाजी समाधान या गाइड/ट्यूटोरियल नहीं मिला।नेस्टेड गिट सबमिड्यूल

हमारे पास सार्वजनिक और निजी परियोजनाओं की जटिल संरचना है जिसके लिए सफलतापूर्वक निर्माण के लिए एक विशिष्ट आदेश की आवश्यकता है। हमारा लक्ष्य एक ही चरण में एकाधिक मेवेन कलाकृतियों को टैग और तैनात करने के लिए मेवेन रिलीज करना है।

parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository) 
    | | 
    | |- public-module:1.0.0-SNAPSHOT:jar 
    |  (Maven module, child of parent-public, Git submodule, public repository) 
    | 
    |- parent-private:1.0.0-SNAPSHOT:pom 
    (Maven modules, Git submodule, private repository) 
     | 
     |- public-module:1.0.0-SNAPSHOT:jar 
     | (Maven module only, child of parent-public, Git submodule, public repository, released) 
     | 
     |- private-module:1.0.0-SNAPSHOT:war 
      (Maven module, child of parent-private, released) 

वर्तमान संरचना Maven निर्माण और स्वतंत्र रूप से परियोजनाओं/मॉड्यूल को तैनात करने की अनुमति देता है:

यहाँ सरलीकृत Maven परियोजना/मॉड्यूल और Git भंडार संरचना है।

जब public-module रिहा (अभिभावक सार्वजनिक/अभिभावक निजी/सार्वजनिक मॉड्यूल निर्देशिका से), maven-release-plugin पर अच्छा प्रदर्शन करता (Git भंडार में चिह्नित किया गया है और रिलीज विरूपण साक्ष्य तैनात किया गया है)।

जब parent-private रिहा, maven-release-plugin तैयार करता है और लक्ष्य चेकआउट के दौरान असफल होने से पहले रिहाई प्रदर्शन शुरू होता है (इस समस्या here चर्चा की है, लेकिन समाधान मेरे संदर्भ में काम नहीं कर रहा है और नहीं पर्याप्त प्रतिष्ठा टिप्पणी करने के लिए)।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <tagNameFormat>[email protected]{project.version}</tagNameFormat> 
     <commitByProject>true</commitByProject> 
     <pushChanges>true</pushChanges> 
    </configuration> 
</plugin> 

है वहाँ एकाधिक Maven कलाकृतियों को रिहा करने में Maven मॉड्यूल और Git संग्रह को व्यवस्थित करने के लिए एक और अधिक सुरुचिपूर्ण तरीका:

यहाँ वर्तमान maven-release-plugin विन्यास है? वैकल्पिक रूप से, क्या किसी को कलाकृतियों को तैनात करने से पहले चेकआउट के दौरान रिक्त रूप से गिट सबमिड्यूल क्लोन करने का समाधान मिला?

+0

यह एक Maven बहु की तरह लगता है :-(एक महान प्लगइन नहीं है मॉड्यूल बिल्ड जो परिणामस्वरूप submodules के बजाय एक गिट भंडार में होना चाहिए। इसके अलावा एक बहु-मॉड्यूल निर्माण का उपयोग करके आप केवल एक ही चरण में पूरे मॉड्यूल को तैनात/छोड़ सकते हैं। इसलिए सवाल यह है कि आप चीजों को और अधिक जटिल बनाना चाहते हैं – khmarbaise

+0

@khmarbaise: आपकी टिप्पणी के लिए धन्यवाद। हमने कई मैवेन मॉड्यूल के साथ एक गिट रिपोजिटरी के लिए जाने का फैसला किया क्योंकि हमें हमारी परियोजना संरचना के लिए _simple_ समाधान नहीं मिला। – almeidap

+1

IMHO वास्तव में कोई अच्छा विकल्प नहीं है। सबसे महत्वपूर्ण में से एक रिलीज के दौरान कदम एक _tag_ बना रहा है, वें के साथ ई अर्थात् इस टैग से कोड बहाल करने से मुझे इस रिलीज के लिए सभी कोड मिलेंगे। लेकिन जीआईटी सबमिड्यूल के साथ, यह सुनिश्चित करने का कोई तरीका नहीं है कि उपयोगकर्ता उस टैग से सब कुछ प्राप्त कर ले, क्योंकि वह आसानी से सबमिशन को पहले के रूप में देख सकता है। –

उत्तर

5

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

गिट का उपयोग करने वाले मैवेन उपयोगकर्ताओं के लिए मैं हमेशा अनुशंसा करता हूं कि कभी भी मल्टी-मॉड्यूल प्रोजेक्ट की सीमाओं को तोड़ने की ज़रूरत नहीं है जिसे सबमिड्यूल में रिलीज प्लगइन का उपयोग करने की आवश्यकता है। इसे एक ही भंडार तक सीमित रखें।

फिर, यह एक महान जवाब नहीं है, लेकिन कई वर्षों के लिए Maven रिलीज प्लगइन का उपयोग कर लेने, यह भी सच है कि यह

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