2013-08-28 13 views
5

हम पीओएम में संस्करण आईडी निर्दिष्ट करते हैं और संगत मैवेन foo-version.jar उत्पन्न करता है। उदाहरण: foo-1.0-SNAPSHOT.jar।मेवेन बिल्ड - संस्करण जानकारी

क्या यह मेवेन के साथ निम्नलिखित करना संभव है?

  • पीओएम में संस्करण आईडी निर्दिष्ट नहीं है लेकिन कमांड लाइन से बिल्ड संस्करण निर्दिष्ट करें। यह पीओएम में संस्करण को "हार्डकोड" करने और प्रत्येक रिलीज के लिए इसे बदलने में मदद नहीं करेगा, लेकिन इसे सुपर बिल्ड स्क्रिप्ट के माध्यम से निर्दिष्ट करें।
+2

जारी करने के लिए बदल रहा है रिहाई प्लगइन द्वारा और मैन्युअल रूप से नहीं किया जाना चाहिए। – khmarbaise

+0

जब आपके पास अपने सॉफ़्टवेयर का एक विशिष्ट बाइनरी संस्करण होता है, तो आप कैसे जानेंगे कि स्रोत के किस संस्करण का निर्माण करने के लिए इसका उपयोग किया गया था? – artbristol

उत्तर

5

सेट परियोजना एक स्थान धारक

<groupId>test</groupId> 
<artifactId>x</artifactId> 
<version>${project.version}</version> 

के रूप में पोम में संस्करण अब आप

mvn -Dproject.version=1.1.1 package 
+0

मैंने कोशिश की कि मैवेन 2 के पुराने दिनों में, iirc यह दृष्टिकोण काम नहीं कर रहा है। परिणामस्वरूप पीओएम अनुपयोगी उत्पन्न होता है। (मेरी इच्छा है कि यह अब सुधार हुआ है)। यही वजह है कि मुझे पीओएम –

+0

के संस्करण में परिवर्तन करने के लिए एक छोटी सी लिपि लिखनी है, यह काम करता है लेकिन जेनरेट/स्थापित पीओएम में ' $ {project.version}' है। क्या इस मॉड्यूल का उपयोग करने के लिए एक निर्भर मॉड्यूल के लिए यह समस्या नहीं होगी? Preferrebly, जेनरेट किए गए पीओएम के पास वास्तविक संस्करण होना चाहिए जो मॉड्यूल के लिए बनाया गया है। – gammay

4

आप maven release plugin इस्तेमाल कर सकते हैं कमांड लाइन से संस्करण पारित कर सकते हैं।

release:update-versions -DautoVersionSubmodules=true

आप autoVersionSubmodules जरूरत है आप प्रत्येक मॉड्यूल के लिए एक ही संस्करण चाहते हैं। अन्यथा आपको प्रत्येक के लिए संस्करण निर्दिष्ट करने की आवश्यकता होगी।

यह केवल अपने वर्तमान संस्करण में भी वृद्धि होगी, आप एक विशेष संस्करण अपने आदेश

अद्यतन मुझे लगता है कि काम कर देता है एक और प्लगइन पाया करने के लिए -DdevelopmentVersion=your version जोड़ने चाहते हैं। The maven versions plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>versions-maven-plugin</artifactId> 
    <version>2.1</version> 
</plugin> 
इस आदेश आप संस्करण निर्धारित कर सकते हैं के साथ

: versions:set -DnewVersion=your version

+0

जब मैंने पहले विकल्प की कोशिश की, तो मुझे यह त्रुटि मिली: '[ERROR] लक्ष्य org.apache.maven.plugins निष्पादित करने में विफल: maven-release-plugin: 2.3.2: प्रोजेक्ट सरल पर अद्यतन-संस्करण (डिफ़ॉल्ट-क्ली) : आवश्यक सेटिंग गुम है: एससीएम कनेक्शन या डेवलपर कनेक्शन निर्दिष्ट होना चाहिए। -> [सहायता 1] '। दूसरा विकल्प * निर्माण * के बाद * संस्करण अपडेट किया गया! किसी भी मामले में, विचार पीओएम से संस्करण को रखना है क्योंकि पीओएम को सीएम में चेक किया गया है और हम प्रत्येक बिल्ड के लिए फाइल नहीं करना चाहते हैं। – gammay

+0

तो आपको अपने पोम में स्कैम टैग जोड़ने की आवश्यकता है, [यहां] [http://maven.apache.org/scm/maven-scm-plugin/usage.html) इसका उपयोग करने का एक उदाहरण – mokuril

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