【问题标题】:Embedding build time into JAR Manifest using Ant使用 Ant 将构建时间嵌入到 JAR 清单中
【发布时间】:2010-11-10 10:30:27
【问题描述】:

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

我目前有以下

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

【问题讨论】:

    标签: java ant manifest build-time


    【解决方案1】:

    您可以为此使用tstamp task

     <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 节点,您可以为其中任何一个定义自定义格式。

    【讨论】:

    • 值得注意的是,在 MANIFEST 中嵌入构建时间会导致 WAR每次都重新构建,即使没有任何变化; IMO 不是很干净。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2023-04-11
      • 2012-01-19
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      相关资源
      最近更新 更多