【问题标题】:How to append a timestamp to the generated jar using gradle?如何使用 gradle 将时间戳附加到生成的 jar 中?
【发布时间】:2019-01-03 02:34:57
【问题描述】:

在运行gradle build 命令时,如何在 jar 文件名中附加时间戳?

我现在的 jar 名称:

abc-0.0.1-SNAPSHOT.jar

我真正想要的:

abc-0.0.1-SNAPSHOT20180721101136.jar

我的 build.gradle 文件:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.abc'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

我尝试过build.date = '${timestamp}',但这不起作用。 我也试过doFirst,但没有成功。

【问题讨论】:

    标签: spring-boot gradle jar


    【解决方案1】:

    您可以通过设置相应任务的archiveName 属性轻松地自己选择 JAR 文件的名称:

    jar {
        archiveName = 'myJarFile.jar'
    }
    

    默认情况下,archiveName 将通过架构 [baseName]-[appendix]-[version]-[classifier].[extension] 组装,其中每个部分是相应任务的另一个属性。对于您的特定用例,我建议只更改名称的 version 部分:

    jar {
        version = project.version + timestamp      // define timestamp in a way you like
    }
    

    您可能希望将此配置放入 doFirst 闭包中,因为时间戳会更精确地显示 JAR 文件的实际创建时间。

    【讨论】:

    • 时间戳是我需要定义的函数吗?
    • 一个变量,你可以在设置新的version之前设置它。我不知道你想如何定义时间戳,你可以使用JDK中的任何方法:stackoverflow.com/questions/23068676/…
    • 我这样做:def timestamp = new Date().format('yyyyMMddHHmmss') jar { version = '0.0.1-SNAPSHOT' archiveName = 'abc' + version + timestamp } 但它不会将版本或时间戳附加到 jar 中
    • @user2340345 仅供参考,非常麻烦的旧日期时间类,例如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 内置的 java.time 类所取代8 及以后。见Tutorial by Oracle
    • @user2340345 String dateTimePortion = OffsetDateTime.now( ZoneOffset.UTC ).truncatedTo( ChronoUnit.SECONDS ).format( DateTimeFormatter.ofPattern( "uuuuMMdd'T'HHmmss" ) ) ; 在中间包含T 以遵循用于交换日期时间值的流行标准ISO 8601 格式。并考虑你想用什么挂钟时间来捕捉当前时刻(时区,或与 UTC 的偏移量)——通常最好在 UTC 中工作。
    猜你喜欢
    • 2021-02-20
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2011-01-31
    • 2019-09-26
    • 2013-10-31
    • 2015-10-10
    相关资源
    最近更新 更多