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




maven-2 ant (5)

मैं चींटी के बजाय 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

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


यदि आप Maven> = 2.1.0-M1 के संस्करण का उपयोग करते हैं, तो आप $ {maven.build.timestamp} संपत्ति का उपयोग कर सकते हैं।

अधिक जानकारी के लिए, देखें: documentation


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

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

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

...
<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


हमें एक नए उत्तर की आवश्यकता है :) अब इसमें निर्माण किया गया है: documentation

${maven.build.timestamp} उपयोग करें


यदि आपको 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>

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





upgrade