feat: implement version display with commit hash and date

This commit is contained in:
2026-05-09 14:05:25 +03:00
parent debf1b165f
commit 1e7587e11b
11 changed files with 199 additions and 5 deletions

View File

@@ -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")
}