Embedding build time into JAR Manifest using Ant
Asked Answered
M

2

20

If I want to embed the current time in JAR manifest using ant is there an ant property I can use for "now" and which manifest attribute is the best to put this information?

I currently have the following

  <manifest>
    <attribute name="Signature-Title" value="${project.name}"/>
    <attribute name="Signature-Version" value="${release.version}"/>
    <attribute name="Signature-Vendor" value="XXX"/>
    <attribute name="Built-By" value="${user.name}"/>
  </manifest>
Masinissa answered 10/11, 2010 at 10:30 Comment(0)
J
24

You can use the tstamp task for this.

 <tstamp>
    <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
  </tstamp>

  <manifest>
    <attribute name="Signature-Title" value="${project.name}"/>
    <attribute name="Signature-Version" value="${release.version}"/>
    <attribute name="Signature-Vendor" value="XXX"/>
    <attribute name="Built-By" value="${user.name}"/>
    <attribute name="Built-Date" value="${TODAY}"/>
  </manifest>

This task set three properties (DSTAMP, TSTAMP, and TODAY) with the current timestamp, each in a different default format (check the link). With the nested format node, you can define a custom format for any of them.

Jessie answered 10/11, 2010 at 10:34 Comment(1)
It's worth noting that embedding the built time in the MANIFEST will cause the WAR to be rebuilt every time even if nothing at all has changed; not very clean IMO.Cipolin
P
0

Use UTC format only in jaror war META-INF/MANIFEST.MF (don't use localized date/time without TZ because you will lost TimeZone information).

See How to have Maven show local timezone in maven.build.timestamp?

Pardo answered 1/12, 2017 at 11:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.