Hallo zusammen !
Was habe ich vor :
Ich möchte meine Java - Spring Boot - Software per Git Tags eine Versionsnummer verpassen. Diese soll dann in eine properties Datei geschrieben werden und von einem Service / Controller ausgelesen werden.
Ich verwende zum Bauen der Software Gradle. Aber als DSL verwende ich Kotlin. Mit Groovy habe ich das in einem anderen Projekt bereits gelöst. Aber hier soll nun Kotlin zu Einsatz kommen.
So sah es mit Groovy aus :
Wo ist mein Problem :
Mit Kotlin kann man die String execute Funktion aus Groovy so nicht mehr verwenden, Daher mache ich folgendes :
Allerdings wird die Ausgabe (z.B v.0.0.1) "nur" in eine Datei geschrieben. Ich möchte aber die Ausgabe noch ändern, sodass in der Datei zum Schluss soewtas steht :
version: v.0.0.1
Allerdings kann ich nur die Ausgbabe mit dem FileOutputStream in eine Datei umlenken. In eine Variable konnte ich das bisher nicht speichern.
Was habe ich bisher versucht :
Allerdings bekomme ich folgenden Fehler :
Kann mir jemand helfen
Was habe ich vor :
Ich möchte meine Java - Spring Boot - Software per Git Tags eine Versionsnummer verpassen. Diese soll dann in eine properties Datei geschrieben werden und von einem Service / Controller ausgelesen werden.
Ich verwende zum Bauen der Software Gradle. Aber als DSL verwende ich Kotlin. Mit Groovy habe ich das in einem anderen Projekt bereits gelöst. Aber hier soll nun Kotlin zu Einsatz kommen.
So sah es mit Groovy aus :
Java:
processResources {
ext.gitVersion = ' git describe --tags --abbrev=0'.execute().text.trim()
filesMatching("**/projectVersion.properties") {
expand (
"projectVersion": ext.gitVersion
)
}
}
Wo ist mein Problem :
Mit Kotlin kann man die String execute Funktion aus Groovy so nicht mehr verwenden, Daher mache ich folgendes :
Java:
task<Exec>("projectVersion") {
commandLine("git", "describe", "--tags", "--abbrev=0")
standardOutput = FileOutputStream("version.properties2")
Allerdings wird die Ausgabe (z.B v.0.0.1) "nur" in eine Datei geschrieben. Ich möchte aber die Ausgabe noch ändern, sodass in der Datei zum Schluss soewtas steht :
version: v.0.0.1
Allerdings kann ich nur die Ausgbabe mit dem FileOutputStream in eine Datei umlenken. In eine Variable konnte ich das bisher nicht speichern.
Was habe ich bisher versucht :
Java:
task<Exec>("projectVersion") {
standardOutput = ByteArrayOutputStream()
doFirst{
commandLine("git", "describe", "--tags", "--abbrev=0")
}
//standardOutput = FileOutputStream("version.properties2")
doLast{
val finalString = String(standardOutput.toByteArray())
println(finalString)
}
Allerdings bekomme ich folgenden Fehler :
Code:
Smart cast to 'ByteArrayOutputStream' is impossible, because 'standardOutput' is a mutable property that could have been changed by this time
Kann mir jemand helfen