Estoy intentando implementar una tarea gradle para crear dinámicamente un archivo buildsignature.properties a partir de una serie de valores de variables de entorno y ejecuciones de shell. Lo tengo funcionando principalmente, pero parece que no puedo obtener el resultado de los comandos de la shell. Aquí está mi tarea ...Cómo usar la salida exec() en 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")
}
}
Pero el campo de propiedades resultante no obtener los resultados deseados para buildUser y buildSystem.
#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
¿Cómo llego buildUser y buildSystem para que coincida con la salida del ejecutivo correspondiente en lugar de algún defecto ExecResultImpl toString? Esto realmente no puede ser tan difícil, ¿verdad?
Fácil es mejor. Realmente no esperaba que la captura de la salida de un comando de shell requiera analizar manualmente una secuencia de salida. No importa. Gracias por la guía. –
Pregunta rápida, ¿no le falta el código 'standardOutput = os' ?? –
Cuando hacemos esto, parece ser asincrónico. Intenta dar salida a whoami y al nombre de host antes de que existan. Ideas? –