วันพฤหัสบดี, มกราคม 22, 2558

ใส่ build time ใน MANIFEST.MF ให้ jar file ที่ build ด้วย maven 3

    ทำ library package เป็น jar file ออกมาแล้วอยากให้มี build time อยู่ใน jar file ด้วย ข้อมูลแบบนี้เค้าจะใส่ไว้ใน MANIFEST ไฟล์กัน ไฟล์มันจะชื่อ MANIFEST.MF

ถ้าลองแกะออกมาดูจาก jar file จะเห็นcontent ประมาณนี้ 

Manifest-Version: 1.0
Built-By: siritas_s
Build-Jdk: 1.7.0_25
Created-By: Apache Maven 3.1.0
Archiver-Version: Plexus Archiver

    ค้นๆ ไปเจอ Cookbook: How To Add Build Time To A JAR Manifest? นี้ นั่งทดลองอยู่ตั้งนานทำไมมันไม่ได้ซักที(วะ) ผมสรุปเองว่ามันเป็นวิธีที่เก่าแล้ว สมัย maven 2 ล่ะมั้ง แถมต้องใส่โน่นนี่ยึบยั่บใน pom

   วิธีสำหรับ maven 3.x สั้นกระชับ ตามนี้เลย

ถ้าใน build ยังไม่มี plugin id maven-jar-plugin ตัวนี้ก็ใส่เข้าไปใต้ <build>

<build>
...
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <archive>
        <manifestEntries>
            <Build-Time>${maven.build.timestamp}</Build-Time>
        </manifestEntries>
    </archive>
    </configuration>
    </plugin>
...
</build>

เพิ่ม config ใน pom แล้ว สั่ง mvn clean package ใหม่  ลองแกะออกมาดูจาก jar file จะเห็นcontent ประมาณนี้

Manifest-Version: 1.0
Build-Time: 20150122-1421
Built-By: siritas_s
Build-Jdk: 1.7.0_25
Created-By: Apache Maven 3.1.0
Archiver-Version: Plexus Archiver

ถ้าอยากเปลี่ยน date format ของ build time ก็เพิ่ม property ตามนี้เข้าไปใต้ <project>
<project>
...
<properties>
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>

</properties>
...
</project>

Happy แล้ว กลับไปทำงานต่อละ

ไม่มีความคิดเห็น :