feat: implement version display with commit hash and date
This commit is contained in:
@@ -2,6 +2,8 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||
import org.gradle.api.tasks.testing.logging.TestLogEvent.*
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Paths
|
||||
import java.time.Instant
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
plugins {
|
||||
java
|
||||
@@ -20,7 +22,7 @@ node {
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
version = "1.0.0-SNAPSHOT"
|
||||
version = "1.0.0-beta"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@@ -189,3 +191,37 @@ tasks.register("countCodeLines") {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register("generateVersionFile") {
|
||||
doLast {
|
||||
// Версия из gradle.properties (по умолчанию 'unspecified', если не задана)
|
||||
val version = project.version.takeIf { it.toString() != "unspecified" }?.toString() ?: "0.0.0"
|
||||
|
||||
// Получение короткого хэша коммита (с обработкой ошибки, если git не доступен)
|
||||
val commitHash = try {
|
||||
providers.exec {
|
||||
commandLine("git", "rev-parse", "--short", "HEAD")
|
||||
}.standardOutput.asText.get().trim()
|
||||
} catch (e: Exception) {
|
||||
logger.warn("Не удалось получить хэш коммита: ${e.message}")
|
||||
"unknown"
|
||||
}
|
||||
|
||||
val buildTime = DateTimeFormatter.ISO_INSTANT.format(Instant.now())
|
||||
|
||||
val propertiesContent = """
|
||||
version=$version
|
||||
commit.hash=$commitHash
|
||||
build.time=$buildTime
|
||||
""".trimIndent()
|
||||
|
||||
val resourceDir = file("src/main/resources")
|
||||
resourceDir.mkdirs()
|
||||
file("$resourceDir/version.properties").writeText(propertiesContent)
|
||||
|
||||
logger.lifecycle("✅ Файл version.properties создан: версия=$version, коммит=$commitHash")
|
||||
}
|
||||
}
|
||||
|
||||
tasks.processResources {
|
||||
dependsOn("generateVersionFile")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user