使用 Ant 将构建时间嵌入到 JAR 清单中

2022-09-02 10:15:03

如果我想使用ant将当前时间嵌入JAR清单中,是否有一个ant属性可用于“now”,哪个清单属性最适合放置此信息?

我目前有以下情况

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

答案 1

您可以使用 tstamp 任务来实现此目的。

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

此任务使用当前时间戳设置三个属性(DSTAMP、TSTAMP 和 TODAY),每个属性采用不同的默认格式(检查链接)。使用嵌套节点,您可以为其中任何一个节点定义自定义格式。format


答案 2

仅在 或 META-INF/MANIFEST 中使用 UTC 格式。MF(不要在没有TZ的情况下使用本地化的日期/时间,因为您将丢失时区信息)。jarwar

请参阅如何让 Maven 在 maven.build.timestamp 中显示本地时区?


推荐