Kotlin DSL : Git Tag auslesen und in eine Variable speichern

8u3631984

Bekanntes Mitglied
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 :
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
 

8u3631984

Bekanntes Mitglied
Ich habe nun die DSL so angepasst :
Java:
fun getSWVersion() :String  {
    val output =  ByteArrayOutputStream()

    exec{
        commandLine("git", "describe", "--tags", "--abbrev=0")
        standardOutput = output
    }

    return output.toString(StandardCharsets.UTF_8)
}

fun updateVersionProperty() {
    File("$buildDir/libs/version.properties").writeText("swVersion:" + getSWVersion())
}


// project version
task<DefaultTask>("projectVersion") {
    updateVersionProperty()
}

wenn ich nun das Projekt bauen will per gralde clean build oder gradle clean bootJar
bekomme ich den Fehler, dass die Datei :
java-media-cms\build\libs\version.properties (Das System kann den angegebenen Pfad nicht finden)

Ich cermute, dass die Verzeichnisse zu dem Zeitpunkt nicht existieren, denn wenn ich eine andere Datei verwende, die nicht im build Verzeichnis liegt, dann klappt es.

Also daher wäre die konkrete Frage wie kann ich meinen Default Taks erst nach dem Build Taks ausführen ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D "Implementation-Version" aus Manifest auslesen Tools - Maven, Gradle, Ant & mehr 6
K Binärdatei aus jar auslesen und lokal als Datei speichern Tools - Maven, Gradle, Ant & mehr 2
A Auslesen einer .txt Datei auf Server mit Digest Authentifizierung Tools - Maven, Gradle, Ant & mehr 2
G ant - last modified datum aus file auslesen Tools - Maven, Gradle, Ant & mehr 7
A RSS-Feeds auslesen mit JAVA speichern und Applet übergeben Tools - Maven, Gradle, Ant & mehr 2
B Systemvariabeln mit applet auslesen Tools - Maven, Gradle, Ant & mehr 3
K Per JavaScript String aus Applet auslesen / Neue Zeile Tools - Maven, Gradle, Ant & mehr 2
R Java Applet zum Auslesen der Größe des Arbeitsspeicher Tools - Maven, Gradle, Ant & mehr 2
H Sicherheitsabfrage eines signierten Applets auslesen Tools - Maven, Gradle, Ant & mehr 6
D Textfeld auslesen Tools - Maven, Gradle, Ant & mehr 5
M JEditorPane HTML tag mit auslesen Tools - Maven, Gradle, Ant & mehr 5
A Pixel auslesen unter JDK1.1.8 Tools - Maven, Gradle, Ant & mehr 2
G Win User auslesen Tools - Maven, Gradle, Ant & mehr 2
D problem beim auslesen von text aus einem textfeld... Tools - Maven, Gradle, Ant & mehr 15
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
JWK Kann ich mit einem Scanner eine Datei mehrmals lesen? Tools - Maven, Gradle, Ant & mehr 3
ruutaiokwu GIT/SourceTree Client: Es wurden keine Änderungen an dieser Datei erkannt, oder es handelt sich um eine Binärdatei (?) Tools - Maven, Gradle, Ant & mehr 5
K Eine ausführbare exe ohne installiertes JRE möglich? Tools - Maven, Gradle, Ant & mehr 4
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
D Möchte gerne eine seperate Klasse eines Tomcat Projekts Neu-Kompilieren Tools - Maven, Gradle, Ant & mehr 3
S Maven Arquillian braucht fast eine Minute für ein Deployment Tools - Maven, Gradle, Ant & mehr 5
fastjack Maven: eine Jar für mehrere Teilprojekte Tools - Maven, Gradle, Ant & mehr 5
B Maven Error bei Referenz zweier Poms auf eine Pom Tools - Maven, Gradle, Ant & mehr 2
D eine Abhängigkeit für viele jars Tools - Maven, Gradle, Ant & mehr 4
I Ratschläge für eine automatisierte Installation benötigt Tools - Maven, Gradle, Ant & mehr 3
G Maven Mit Maven Assemblieren und über Profiles eine properties-Datei manipulieren Tools - Maven, Gradle, Ant & mehr 2
M ant: Ordner in eine Jar einfügen Tools - Maven, Gradle, Ant & mehr 3
D Maven - wo gehört eine .properties-Datei hin? Tools - Maven, Gradle, Ant & mehr 20
traysa Wie binde ich ein applet in eine jsp Tools - Maven, Gradle, Ant & mehr 3
M schreiben in eine Txt bei applet Tools - Maven, Gradle, Ant & mehr 2
A Mit einem Applet eine txt-Datei einlesen und ausgeben. Tools - Maven, Gradle, Ant & mehr 6
H Applet Access Denied - Beim zugriff auf eine .txt Datei Tools - Maven, Gradle, Ant & mehr 8
E wie öffne ich eine website Tools - Maven, Gradle, Ant & mehr 3
S Applet in Jar umwandeln und dann auf eine Website einbinden Tools - Maven, Gradle, Ant & mehr 6
H Aus dem Applet eine andere Klasse instanzieren Tools - Maven, Gradle, Ant & mehr 5
B applet erstellen, welches eine grafikdatei erzeugt Tools - Maven, Gradle, Ant & mehr 2
G nur eine weiße Seite angezeigt, wenn ich auf eine DB zugreif Tools - Maven, Gradle, Ant & mehr 2
M eine Frage über JApplet und JMenuBar Tools - Maven, Gradle, Ant & mehr 6
K Ein Objekt anhalten für eine bestimmte Zeit Tools - Maven, Gradle, Ant & mehr 2
G Über Applet eine Datenbankverbindung Tools - Maven, Gradle, Ant & mehr 4
D Libarys in eine JAR Datei mit eclipse Tools - Maven, Gradle, Ant & mehr 8
D Schon wieder eine Frage für meinen Editor Tools - Maven, Gradle, Ant & mehr 10
M Eine Datei lesen mit einem Applet (gleicher Server) Tools - Maven, Gradle, Ant & mehr 2
F Eine lokale .txt Datei auf Server upladen und downloaden Tools - Maven, Gradle, Ant & mehr 3
U was braucht man um fuer eine Java-Server-Application? Tools - Maven, Gradle, Ant & mehr 6
T Feststellen ob eine andere Seite aufgerufen wurde Tools - Maven, Gradle, Ant & mehr 16
P Eine Frage fur Galleries ? Tools - Maven, Gradle, Ant & mehr 5
S showDocument() für eine Rollover-Button-Klasse Tools - Maven, Gradle, Ant & mehr 2
G Applet braucht eine bestimmte Plugin-Version Tools - Maven, Gradle, Ant & mehr 11
B Eine Applikation in ein Applet umwandeln Tools - Maven, Gradle, Ant & mehr 4
R Auf WebServer eine Datei schreiben? Tools - Maven, Gradle, Ant & mehr 6
G Applets in eine Datei schreiben lassen Tools - Maven, Gradle, Ant & mehr 2

Ähnliche Java Themen

Neue Themen


Oben