Sto cercando di implementare un'attività gradle per creare dinamicamente un file buildsignature.properties da una serie di valori di variabili di ambiente ed esecuzioni di shell. Ce l'ho quasi sempre funzionante, ma non riesco a ottenere l'output dei comandi della shell. Ecco il mio compito ...Come utilizzare l'output exec() nel gradle
task generateBuildSignature << {
ext.whoami = exec() {
executable = "whoami"
}
ext.hostname = exec() {
executable = "hostname"
}
ext.buildTag = System.env.BUILD_TAG ?: "dev"
ant.propertyfile(
file: "${buildDir}/buildsignature.properties",
comment: "This file is automatically generated - DO NOT EDIT!") {
entry(key: "version", value: "${project.version}")
entry(key: "buildTimestamp", value: "${new Date().format('yyyy-MM-dd HH:mm:ss z')}")
entry(key: "buildUser", value: "${ext.whoami}")
entry(key: "buildSystem", value: "${ext.hostname}")
entry(key: "buildTag", value: "$ext.buildTag")
}
}
Ma la proprietà campo risultante non ottiene i risultati desiderati per buildUser e di compilazione.
#This file is automatically generated - DO NOT EDIT!
#Mon, 18 Jun 2012 18:14:14 -0700
version=1.1.0
buildTimestamp=2012-06-18 18\:14\:14 PDT
buildUs[email protected]2e6a54f9
buildSyst[email protected]46f0bf3d
buildTag=dev
Come faccio ad avere buildUser e di compilazione per abbinare l'uscita del exec corrispondente piuttosto che qualche difetto ExecResultImpl toString? Questo davvero non può essere così difficile, vero?
Easy è meglio. Non mi aspettavo davvero che catturare l'output di un comando shell richiedesse l'analisi manuale di un flusso di output. Non importa. Grazie per la guida. –
Domanda veloce, manca il tuo codice 'standardOutput = os' ?? –
Quando facciamo questo sembra essere asincrono. Prova ad emettere whoami e hostname prima che esistano. Idee? –