一連の環境変数値とシェル実行から buildsignature.properties ファイルを動的に作成する 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" )
}
}
しかし、結果のプロパティ フィールドは、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
buildUser=org.gradle.process.internal.DefaultExecHandle$ExecResultImpl@2e6a54f9
buildSystem=org.gradle.process.internal.DefaultExecHandle$ExecResultImpl@46f0bf3d
buildTag=dev
デフォルトの ExecResultImpl toString ではなく、対応する exec の出力と一致するように buildUser と buildSystem を取得するにはどうすればよいですか? これは本当に難しいことではありませんよね?