如何使用 gradle 将时间戳附加到生成的 jar 中?
Posted
技术标签:
【中文标题】如何使用 gradle 将时间戳附加到生成的 jar 中?【英文标题】:How to append a timestamp to the generated jar using gradle? 【发布时间】: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
,但没有成功。
【问题讨论】:
【参考方案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中的任何方法:***.com/questions/23068676/…
我这样做:def timestamp = new Date().format('yyyyMMddHHmmss') jar version = '0.0.1-SNAPSHOT' archiveName = 'abc' + version + timestamp
但它不会将版本或时间戳附加到 jar 中
@user2340345 仅供参考,非常麻烦的旧日期时间类,例如 java.util.Date
、java.util.Calendar
和 java.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 中工作。以上是关于如何使用 gradle 将时间戳附加到生成的 jar 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将日期构建附加到 gradle 上的 versionNameSuffix
如何将 gradle 生成的源文件夹添加到 Eclipse 项目?