私は、一連の環境変数値とシェル実行からbuildsignature.propertiesファイルを動的に作成するためのgradleタスクを実装しようとしています。私は主に動作しているが、シェルコマンドの出力を得ることができない。ここに私の仕事です...graleのexec()出力の使用方法
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")
}
}
しかし、結果のプロパティフィールドは、buildUserと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
にはどうすればいいbuildUserとビルドシステムが対応するexecのではなく、いくつかのデフォルトExecResultImplのtoStringの出力と一致するのですか?これは本当に難しいことではありませんか?
簡単です。私は本当に出力ストリームを手で解析するシェルコマンドの出力をキャプチャすることを期待していませんでした。どんなに。ガイダンスをありがとう。 –
簡単な質問ですが、あなたのコードに 'standardOutput = os'がありませんか? –
これを行うと、非同期であるようです。 whoamiとhostnameが存在する前に出力しようとします。アイデア? –