में exec() आउटपुट का उपयोग कैसे करें मैं पर्यावरण परिवर्तनीय मानों और खोल निष्पादन की श्रृंखला से गतिशील रूप से buildsignature.properties फ़ाइल बनाने के लिए एक क्रमिक कार्य को कार्यान्वित करने का प्रयास कर रहा हूं। मेरे पास यह ज्यादातर काम कर रहा है, लेकिन मुझे खोल कमांड का आउटपुट नहीं मिल रहा है। यहां मेरा कार्य है ...ग्रेडल
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 और buildSystem इसी कार्यकारी बजाय कुछ डिफ़ॉल्ट ExecResultImpl toString के उत्पादन में मैच के लिए मिलता है? यह वास्तव में कठिन नहीं हो सकता है, है ना?
आसान बेहतर है। मैं वास्तव में एक शेल कमांड के आउटपुट को कैप्चर करने की उम्मीद नहीं करता था, आउटपुट स्ट्रीम को पार्स करने के लिए हाथ की आवश्यकता होती है। कोई बात नहीं। मार्गदर्शन के लिए धन्यवाद। –
त्वरित प्रश्न, क्या आपका कोड 'standardOutput = os' गायब नहीं है ?? –
जब हम ऐसा करते हैं तो यह असीमित लगता है। यह मौजूद होने से पहले व्हामी और मेजबाननाम को आउटपुट करने का प्रयास करता है। विचार? –