2010-08-19 10 views
9

से मेवेन प्रोजेक्ट संस्करण अपडेट करें सबसे पहले, मुझे कुछ समझ है कि निम्नलिखित चीजों को करने का आम तौर पर स्वीकार्य तरीका नहीं हो सकता है।स्क्रिप्ट

हमारे पास एक मेवेन 2 प्रोजेक्ट है जिसमें एक संस्करण संख्या है जिसे प्रत्येक सप्ताह या तो एक नई रिलीज के दौरान अपडेट किया जाना चाहिए। इस प्रक्रिया के दौरान, मैंने याद रखने वाली सभी चीजों को खत्म करने की कोशिश की है और मैंने एक बैश स्क्रिप्ट बनाई है जो प्रक्रिया को अंतःक्रियात्मक रूप से संभालती है।

हालांकि, मेरी समस्या कमांड लाइन से पोम संस्करण अपडेट कर रही है। मैं इसे sed के साथ कर सकता हूं लेकिन मुझे नहीं लगता कि यह बहुत सुविधाजनक है। मैं सोच रहा था कि क्या कोई मेवेन प्लगइन है जो सीधे कमांड लाइन से pom.xml को संशोधित करने में सक्षम होगा। संस्करण पोम के गुण खंड में सेट है। क्या एक प्लगइन लिखना संभव होगा जो गुणों को बदल देगा?

अग्रिम धन्यवाद।

अद्यतन

ऐसा लगता है कि मेरी समस्या परियोजना संस्करणों गुण (यह है कि जब छानने लागू किया गया) के रूप में परिभाषित है जो अब थोड़ा गूंगा लगता है के साथ किया गया था।

एक चीज जिसे मैं अभी भी एक उत्तर की तलाश में हूं, यह है कि कुछ परियोजना के संस्करण को कमांड लाइन पर विश्वसनीय रूप से कैसे प्राप्त किया जाए। पहले मेरे पास एक "सुंदर अनूठी" संपत्ति थी जिसे मैंने grep का उपयोग किया था, लेकिन अब <version> तत्व अद्वितीय नहीं है क्योंकि बाल परियोजना में कम से कम दो हैं। अगर मैवेन के पास कोई समाधान नहीं है, तो मुझे कुछ प्रकार के एक्सएमएल पार्सर की आवश्यकता होगी, लेकिन मेरा लक्ष्य स्क्रिप्ट को यथासंभव स्वतंत्र बनाना है।

मुझे यकीन नहीं है कि मुझे इससे एक नया प्रश्न बनाना चाहिए था, लेकिन मैंने नहीं किया। संस्करण प्राप्त करना संस्करण को सेटिंग से बहुत करीबी से संबंधित है।

उत्तर

13

मैं सोच रहा था कि कोई मेवेन प्लगइन है जो सीधे कमांड लाइन से pom.xml को संशोधित करने में सक्षम होगा।

Versions Maven Plugin ऐसा कर सकता है।

  • versions:set, कमांड लाइन से परियोजना संस्करण स्थापित करने के लिए आवश्यक के रूप में किसी भी बच्चे मॉड्यूल के विवरण को अद्यतन करने के लिए इस्तेमाल किया जा सकता है: निम्नलिखित लक्ष्य की जाँच करें।
+0

धन्यवाद! मुझे उस प्लगइन को खुद ही मिला लेकिन किसी भी तरह से इस तथ्य को याद किया कि प्लगइन वास्तव में pom.xml को अपडेट कर सकता है और न केवल निर्भरताओं को प्रदर्शित करता है। संस्करण को सेट करना काम नहीं करता है क्योंकि संस्करण को मूल पोम में एक संपत्ति के रूप में परिभाषित किया गया है, जिसे मैंने उल्लेख नहीं किया था। हालांकि, मैंने पाया कि एक लक्ष्य "अद्यतन-गुण" है जो चाल कर सकता है। – mkko

+0

स्पष्ट रूप से "अद्यतन-गुण" केवल निर्भरताओं को अद्यतन करने और किसी भी मान को सेट करने के लिए नहीं है। "संस्करण: सेट" निकटतम मैच है, लेकिन ऐसा लगता है कि मूल पोम में संस्करण को परिभाषित करने का कोई तरीका नहीं है - या कम से कम एक संपत्ति के रूप में। – mkko

+0

@mkko: 1. आप वास्तव में ** माता-पिता पीओएम में संस्करण को हार्ड कोड और '' में बाल मॉड्यूल के तत्वों को देखना चाहिए, [एमएनजी -624] (http://jira.codehaus.org/browse/एमएनजी -624) इस विषय पर व्यापक चर्चाओं के लिए 2. निर्भरताओं को निर्मित संपत्ति '$ {project.version}' का उपयोग करना चाहिए, संस्करण के लिए संपत्ति का उपयोग करने के लिए कोई वैध कारण नहीं है। इस तरह यह मेवेन के साथ काम करता है। 3. और फिर आप 'संस्करण: सेट' का उपयोग करने में सक्षम होंगे (लेकिन यह चीजों को सही करने का अप्रत्यक्ष परिणाम है)। –

1
Maven POM reference से

:

env.X: "। Env" साथ एक चर लगाकर खोल पर्यावरण परिवर्तक वापस कर देगा। उदाहरण के लिए, $ {env.PATH} में पथ पर्यावरण चर शामिल है। नोट: पर्यावरण चर स्वयं विंडोज पर केस-असंवेदनशील हैं, गुणों की स्थिति केस-संवेदी है। अन्य शब्दों में, जबकि विंडोज शैल % PATH% और% पथ% के लिए समान मान देता है, मैवेन $ {env.PATH} और $ {env.Path} के बीच अंतर करता है। मेवेन 2.1.0 के रूप में, पर्यावरण चर के नाम विश्वसनीयता के लिए ऊपरी-मामले के लिए सामान्यीकृत किए गए हैं।

इसका मतलब है कि आप $ MYMAVENPROJECTVERSION की तरह एक वातावरण चर है और इस रूप में पढ़ सकते हैं कि:

<version>${env.MYMAVENPROJECTVERSION}</version> 

आप हर हफ्ते इस वातावरण चर का अद्यतन कर सकते हैं, निर्माण चलाने से पहले।

आशा है कि यह आपकी मदद करेगा।

+2

यह बहु-मॉड्यूल बिल्ड के साथ काम नहीं करेगा (आपको ** ** 'तत्व में संस्करण को हार्ड कोड होना चाहिए)। –

+0

इसका क्या अर्थ है? आप प्लेसहोल्डर का मूल भाग में उपयोग नहीं कर सकते हैं? यह एक बग है? – sourcerebels

+1

बिल्कुल, आप प्लेसहोल्डर्स को मूल अनुभाग में उपयोग नहीं कर सकते हैं। यह डिजाइन द्वारा है। मेवेन 3.1 में संस्करण कम पैरेंट तत्व की अनुमति होगी। Http://jira.codehaus.org/browse/MNG-624 और इस विषय पर दिलचस्प चर्चाओं के लिए सभी संबंधित मुद्दों को देखें। –