2012-07-17 25 views
13

के साथ निर्मित मेरे ग्रहण प्लगइन के लिए संस्करण संख्या अद्यतन प्रक्रिया को स्वचालित करने के लिए कैसे करें I परियोजना described here के समान प्रोजेक्ट के साथ काम कर रहा हूं।मैवेन

<modules> 
    <module>../de.vogella.tycho.plugin</module> 
    <module>../de.vogella.tycho.feature</module> 
    <module>../de.vogella.tycho.p2updatesite</module> 
</modules> 

ये मॉड्यूल जैसे एक सामान्य संस्करण संख्या: इसलिए, यह माता पिता pom.xml में कुछ मॉड्यूल है 1.0.0-SNAPSHOT या -SNAPSHOT के बिना।

<feature 
     id="com.my.feature" 
     label="My plugin feature" 
     version="1.0.0"> 

और:

<plugin 
     id="com.my.plugin" 
     download-size="0" 
     install-size="0" 
     version="1.0.0" 
     unpack="false"/> 

फ़ाइलों category.xml (p2 अद्यतन साइट परियोजनाओं में) और MANIFEST.MF (प्लगइन परियोजनाओं में feature.xml फ़ाइल एक ही संस्करण संख्या शामिल करने की जरूरत है) एक ही मूल्य रखने की जरूरत है।

सवाल यह है कि: मैवेन का उपयोग करके इन सभी फ़ाइलों में संस्करण संख्या अद्यतन प्रक्रिया को स्वचालित कैसे करें?

मैंने मैवेन-रिलीज-प्लगइन और मैवेन-वर्जन-प्लगइन का उपयोग करके इस समस्या को हल करने का प्रयास किया। पहली प्लगइन बहुत सारी अप्रयुक्त कार्रवाइयां बनाती है (जैसे सीवीएस बहुत सी चीजें बनाना, जिसे मैं इस परियोजना में उपयोग नहीं करता)। दूसरी प्लगइन केवल pom.xml फ़ाइलों में परिवर्तन करता है और feature.xml, category.xml और MANIFEST.MF को संशोधित नहीं करता है, या मैंने इसे इतना अच्छा नहीं उपयोग किया।

+2

फाइलें कहां स्थित हैं जिन्हें अद्यतन करने की आवश्यकता है? उन फ़ाइलों को फ़िल्टर करने के बारे में सोच रहे हो? – khmarbaise

उत्तर

20

इस समस्या के लिए एक विशेष tycho-versions-plugin है। यह (जानबूझकर) मेवेन-वर्जन-प्लगइन जैसा ही करता है, लेकिन feature.xml और MANIFEST.MF में (अनावश्यक) संस्करण भी अपडेट करता है।

और भी, प्लगइन उन संदर्भों को भी अद्यतन करता है जो एक सटीक संस्करण निर्दिष्ट करते हैं, जैसे फीचर.एक्सएमएल में प्लग-इन के संदर्भ, या category.xml में सुविधाओं के संदर्भ। तो अंत में, आर्टिफैक्ट संस्करणों की सभी घटनाएं एक रिफैक्टरिंग की तरह अपडेट की जाती हैं।

सटीक संस्करणों के संदर्भों के लिए, सामान्य टाइपो बिल्ड के दौरान स्वचालित अपडेट भी होता है। तो अगर उदा। आपकी सुविधा आपके प्लग-इन को संस्करण 1.0.0.qualifier में संदर्भित करती है, यह संस्करण स्ट्रिंग क्वालीफायर के वास्तविक मान के साथ अपडेट की जाती है, उदा। 1.0.0.201207171147। आप इस कार्यक्षमता का उपयोग टाइको-संस्करण-प्लगइन द्वारा अपडेट किए जाने वाले स्थानों की संख्या को कम करने के लिए कर सकते हैं: संदर्भ में वर्तमान संस्करण शाब्दिक निर्दिष्ट करने के बजाय, आप जादू संस्करण 0.0.0 का उपयोग कर सकते हैं। सामान्य संस्करण के हिस्से के रूप में यह संस्करण स्वचालित रूप से नवीनतम संस्करण में भी अपडेट किया गया है।

+0

पूरी तरह से सहमत हैं +1 –

9

मैं Tobias Oberlies 'जवाब देने के लिए मेरे जैसे कम अनुभवी Maven उपयोगकर्ताओं के लिए कुछ व्यावहारिक संकेत जोड़ना चाहते हैं:

लक्ष्य tycho-versions:set-version सभी परियोजनाओं है कि मास्टर पोम द्वारा दर्शाया जाता है के संस्करण बदल जाएगा। मेवेन कॉन्फ़िगरेशन फ़ाइलों (pom.xml) के साथ-साथ संबंधित ग्रहण/ओएसजीआई कलाकृतियों (MANIFEST.MF, feture.xml, category.xml) का संस्करण स्ट्रिंग लगातार बदल दिया जाएगा।

कमांड लाइन से लक्ष्य को चलाने के लिए उपयोग करने के बाद:

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT 

उपयोगकर्ता newVersion संपत्ति, 1.2.0-SNAPSHOT इस उदाहरण में, स्थापित किया जाना नया संस्करण है।

उपरोक्त कमांड लाइन tycho-versions-plugin के नवीनतम संस्करण का उपयोग करेगी।यदि प्लगइन का एक निश्चित संस्करण उपयोग किया जाना चाहिए, तो tycho-version-plugin को मास्टर पोम के project/build/plugins अनुभाग में जोड़ा जाना आवश्यक है।

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>tycho-versions-plugin</artifactId> 
    <version>${tycho-version}</version> 
</plugin> 

टाइको के वर्तमान संस्करण के साथ ${tycho-version} बदलें या उस नाम और उचित मूल्य के साथ एक संपत्ति परिभाषित करते हैं।

+0

आप पीओएम में नया संस्करण क्यों परिभाषित करना चाहते हैं? – oberlies

+0

संकेत के लिए धन्यवाद। इसे एक दूसरा विचार देकर, आप शायद सही हैं कि यह बहुत संभावना नहीं है कि कोई व्यक्ति पोम फ़ाइल में नया संस्करण _store_ करना चाहता है। –

+0

धन्यवाद! एक जादू की तरह काम करता है! –