java - मैं मावेन कलाकृतियों के लिए समय-स्टैंप जानकारी कैसे जोड़ूं?




maven-2 ant (4)

मैं चींटी के बजाय Maven2 का उपयोग करने के लिए एक बड़े बिल्ड-सिस्टम को अपग्रेड कर रहा हूं, और हमारे पास दो संबंधित आवश्यकताएं हैं जो मैं फंस गया हूं:

  1. हमें समय-स्टैंप वाली कलाकृतियों को बनाने की आवश्यकता है, इसलिए पैकेज चरण (या जहां भी) का एक हिस्सा, भवन के बजाय

    project-1.0-SNAPSHOT.jar

    हमें निर्माण करना चाहिए

    project-1.0-20090803125803.jar

    (जहां 20090803125803 सिर्फ एक 20090803125803 है, जब जार का निर्माण होता है तो समय-स्टांप)।

    केवल वास्तविक आवश्यकता यह है कि टाइम-स्टैम्प उत्पन्न फ़ाइल के फ़ाइलनाम का एक हिस्सा हो।

  2. एक ही टाइम-स्टैम्प को जनरेटेड जार के अंदर एक वर्जन.प्रॉपर्टी फाइल के भीतर शामिल किया जाना है।

यह जानकारी जनरेट किए गए pom.properties में शामिल है जब आप चलाते हैं, उदाहरण के लिए, mvan mvn package लेकिन टिप्पणी की जाती है:

#Generated by Maven
#Mon Aug 03 12:57:17 PDT 2009

जहाँ शुरू करने के लिए किसी भी विचार उपयोगी होगा! धन्यवाद!


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


मावेन संस्करण 2.1.0-M1 या नए ने विशेष चर maven.build.timestamp में बनाया है।

<build>
  <finalName>${project.artifactId}-${project.version}-${maven.build.timestamp}</finalName>
</build>

अधिक जानकारी के लिए मावेन documentation देखें।

पुराने मावेन संस्करणों के लिए मावेन maven-timestamp-plugin या buildnumber-maven-plugin maven-timestamp-plugin पर एक नज़र डालें।

यदि आप मावेन-टाइमस्टैम्प-प्लगइन का उपयोग करते हैं, तो आप परिणामी विरूपण साक्ष्य नाम में हेरफेर करने के लिए कुछ इस तरह का उपयोग कर सकते हैं।

<build>
   <finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>
</build>

और बिल्डनंबर-मावेन-प्लगइन के लिए यह कॉन्फ़िगरेशन $ {टाइमस्टैम्प} संपत्ति बनाना चाहिए जिसमें टाइमस्टैम्प मूल्य शामिल है। इस प्लगइन के साथ सीधे version.properties फ़ाइल बनाने का एक तरीका प्रतीत नहीं होता है।

<configuration>
   <format>{0,date,yyyyMMddHHmmss}</format>
   <items>
      <item>timestamp</item>
   </items>

</configuration>

These three sites भी जांचने लायक हैं।


यदि आपको UTC के अलावा किसी समयक्षेत्र में समय की आवश्यकता है (जब आप ${maven.build.timestamp} उपयोग करते हैं तो डिफ़ॉल्ट) आप build-helper-maven-plugin उपयोग कर सकते हैं। http://mojo.codehaus.org/build-helper-maven-plugin/usage.html के बारे में http://mojo.codehaus.org/build-helper-maven-plugin/usage.html में और देखें।

वैसे भी, यह है कि मैं GMT-5 में टाइमस्टैम्प मिला है और इसे अपनी कलाकृतियों के अंतिम नाम में डाल दिया है:

  <build>
      <plugins>
          <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>build-helper-maven-plugin</artifactId>
              <version>1.9.1</version>
              <executions>
                  <execution>
                      <id>timestamp-property</id>
                      <goals>
                          <goal>timestamp-property</goal>
                      </goals>
                      <configuration>
                          <name>current.time</name>
                          <pattern>yyyyMMdd-HHmmss</pattern>
                          <timeZone>GMT-5</timeZone>
                      </configuration>
                  </execution>
              </executions>
          </plugin>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <version>2.4</version>
              <configuration>
                  <finalName>${project.name}-${current.time}</finalName>
              </configuration>
          </plugin>
      </plugins>
  </build>

यह पोस्ट (विशेष रूप से नीचे का हिस्सा) भी इस मुद्दे के लिए बहुत उपयोगी और व्यावहारिक है।

स्टैम्पिंग वर्जन नंबर और बिल्ड टाइम में एक प्रॉपर्टी फाइल में मावेन के साथ

पोम इस तरह दिखेगा

...
<properties>

        ....

        <!-- Timestamp of build  -->
        <timestamp>${maven.build.timestamp}</timestamp>
        <maven.build.timestamp.format>yyyy_MM_dd_HH_mm</maven.build.timestamp.format>

</properties>

...

<build>
        <finalName>${project.artifactId}-${project.version}-${timestamp}</finalName>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                ....
            </plugin>
        </plugins>
</build>
....

और पैकेज का नाम MyProject-1.0. 0-2015_03_02_13_46.war MyProject-1.0. 0-2015_03_02_13_46.war







upgrade