समस्या का पता लगाने के बाद मैं ग्रैडल बिल्ड को कैसे रोक सकता हूं? मैं एक जोर का उपयोग कर सकता हूं, अपवाद फेंक सकता हूं, सिस्टम.एक्सिट (खराब विचार) कर सकता हूं, या ग्रैडल में एक समर्पित फ़ंक्शन का उपयोग कर सकता हूं (लेकिन मुझे एक नहीं मिला)। ग्रैडल (और क्यों?) के लिए सबसे अच्छा तरीका क्या है।ग्रैडल बिल्ड को रोकने के लिए अनुशंसित तरीका
उत्तर
मैं आमतौर पर org.gradle.api
package से प्रासंगिक अपवाद फेंक देता हूं, उदाहरण के लिए InvalidUserDataException
जब किसी ने कुछ सामान्य त्रुटियों के लिए अमान्य, या GradleScriptException
दर्ज किया है।
आप वर्तमान कार्य या कार्रवाई बंद करो, और अगले पर ले जाना चाहते हैं, तो आप भी कर सकते हैं फेंक एक StopActionException
वर्तमान में कोई समर्पित विधि नहीं है, हालांकि वहाँ एक जोड़ने के लिए किया गया चर्चाएं करें।
ग्रैडल बिल्ड को रोकने का अनुशंसित तरीका अपवाद फेंकना है। चूंकि ग्रोवी ने अपवादों की जांच नहीं की है, और डिफ़ॉल्ट रूप से ग्रैडल अपवाद प्रकार मुद्रित नहीं करता है, यह महत्वपूर्ण नहीं है कि अपवाद फेंक दिया गया हो। निर्माण स्क्रिप्ट में, GradleException अक्सर उपयोग किया जाता है, लेकिन एक ग्रोवी दावा भी उचित लगता है (परिस्थितियों और दर्शकों के आधार पर)। एक स्पष्ट संदेश प्रदान करना महत्वपूर्ण है। एक कारण जोड़ना (यदि उपलब्ध हो) डीबगिंग (--stacktrace
) के लिए मदद करता है।
ग्रैडल वर्तमान कार्य/कार्य कार्रवाई को रोकने के लिए समर्पित अपवाद प्रकार StopExecutionException
/StopActionException
प्रदान करता है लेकिन निर्माण जारी रखता है।
आप निर्माण को रोकने के लिए चाहते हैं, तो फेंक:
throw new GradleException('error occurred')
या इसके बाद के अपवाद के लिए उपवर्गों फेंक देते हैं। कुछ उप-वर्ग अपवाद वास्तव में केवल वर्तमान कार्य को विफल करते हैं लेकिन निर्माण के साथ जारी रखते हैं।
एक और विकल्प यदि आपके पास बाद में अपवाद को पकड़ने में सक्षम होने की कोई इच्छा नहीं है तो चींटी विफल कार्य को कॉल करना है। मेरी राय में पढ़ने के लिए थोड़ा आसान है और आप बिना किसी डेटा के उपयोग के उपयोगकर्ता को एक अच्छा संदेश दे सकते हैं।
task (tarball, dependsOn: warAdmin) << {
ant.fail('The sky is falling!!')
}
आप की तरह एक संदेश देता है:
* What went wrong:
Execution failed for task ':tarball'.
> The sky is falling!!
शायद आप कर सकते हैं पकड़ यह (शायद फेंक देता है चींटी के BuildException?), लेकिन है कि यदि एक लक्ष्य तो मैं चींटी का उपयोग नहीं होता। असफल। मैं केवल यह देखना आसान बनाता हूं कि मानक ग्रेडल अपवाद फेंकने के द्वारा अपवाद को पकड़ने के लिए tim_yates सुझाव दिया गया है।
बिल्ड स्क्रिप्ट को रोकने में एक साधारण GradleException को फेंकना काम करता है। यह आवश्यक पर्यावरण सेटअप की जांच के लिए बहुत अच्छा काम करता है।
GradleException('your message, why the script is stopped.')
उदाहरण: आदेश रिटर्न 0
कोई उत्पादन होता है जब
task myCommand(type:Exec) {
... normal task setup ....
ignoreExitValue true
standardOutput = new ByteArrayOutputStream()
ext.output = { standardOutput.toString() }
doLast {
if (execResult.exitValue) {
logger.error(output())
throw new TaskExecutionException(it,
new Exception("Command '${commandLine.join(' ')}' failed; "
+ "see task output for details.")
)
}
}
}
:
if(null == System.getenv()['GRADLE_USER_HOME']) {
throw new GradleException('Required GRADLE_USER_HOME environment variable not set.')
}
यहाँ एक कोड टुकड़ा अनुकरण करने के लिए कैसे Gradle javac काम त्रुटियों फेंकता कोशिश करता है। कोई अन्य मूल्य मानक आउटपुट प्रिंट करेगा और बिल्ड को रोक देगा।
नोट: यदि आपका आदेश त्रुटि आउटपुट पर भी लिखता है, तो आपको त्रुटि लॉग में शामिल करने की आवश्यकता हो सकती है।
- 1. क्या ग्रैडल बिल्ड
- 2. सीखने के लिए सर्वोत्तम संसाधन ग्रैडल बिल्ड टूल
- 3. ग्रैडल
- 4. अनुशंसित तरीका अगर ब्लॉक
- 5. एरलांग। सही तरीका प्रक्रिया को रोकने के
- 6. ग्रैडल में, पर्यावरण चर के लिए एक बेहतर तरीका है?
- 7. जावा, स्थायी, विश्वसनीय भंडारण के लिए हैश मैप्स को बनाए रखने के लिए अनुशंसित तरीका?
- 8. ग्रैडल
- 9. ग्रैडल
- 10. ग्रैडल
- 11. वेबलॉग में 2 डी एचयूडी बनाने के लिए अनुशंसित तरीका
- 12. बिल्ड फ़ाइल में ग्रैडल संस्करण संख्या कैसे जांचें?
- 13. ग्रैडल
- 14. ग्रैडल
- 15. ग्रैडल
- 16. ग्रैडल बिल्ड के दौरान प्रोजेक्ट स्रोत से आप SLF4J लॉगिंग आउटपुट को कैसे देखते हैं?
- 17. एन्कोड करने के लिए अनुशंसित तरीका/डिकोड यूआरएल
- 18. winhttp.h पाने के लिए अनुशंसित तरीका क्या है?
- 19. मैं ग्रैडल बिल्ड स्क्रिप्ट में मैवेन प्रॉपर्टी कैसे निर्दिष्ट करूं?
- 20. ग्रैडल - JAR
- 21. ग्रैडल
- 22. ग्रैडल
- 23. libs फ़ोल्डर में जार फ़ाइलों का उपयोग एंड्रॉइड ग्रैडल बिल्ड
- 24. ग्रैडल
- 25. एक वाणिज्यिक अनुप्रयोग के लिए Win32 एपीआई को हुक करने के लिए अनुशंसित तरीका क्या है?
- 26. ग्रैडल एप्लिकेशन प्लगइन: क्लासपाथ
- 27. सफारी को AJAX अनुरोधों के लिए 401 प्रतिक्रियाओं को रोकने से रोकने के लिए कैसे करें
- 28. मौजूदा भंडार लेआउट के लिए ग्रैडल मल्टीप्रोजेक्ट बिल्ड अप करने में कठिनाई होने में
- 29. iOS5: rectForRowAtIndexPath विधि के लिए अपवाद को रोकने के लिए
- 30. परीक्षण ग्रैडल स्क्रिप्ट्स के लिए मार्गदर्शिका
यदि कोई कार्य सफलतापूर्वक निष्पादित नहीं होता है तो आप [TaskExecutionException] (http://www.gradle.org/docs/current/javadoc/org/gradle/api/tasks/TaskExecutionException.html) का भी उपयोग कर सकते हैं। (यह 1.11 दस्तावेज़ों के क्रमिक के अनुसार सच है, मुझे यकीन नहीं है कि इसे कब पेश किया गया था।) –
क्या कोई अच्छा वाक्यविन्यास विकल्प यहां हैं? कोटलिन की पूर्व शर्त वाक्यविन्यास पर विचार करें: 'आवश्यकता है (कुछ! = जो कुछ भी) {"अच्छा नहीं!" } 'के रूप में अधिक वर्बोज़ और टाइप-ई' के विपरीत 'अगर (कुछ! = जो कुछ भी) {नया ग्रैडलएक्सप्शन फेंक दें ("अच्छा नहीं!")} – Groostav
'GradleScriptException' के बारे में भयानक बात यह है कि इसे एक दूसरे पैरामीटर की आवश्यकता है कारण। – Trejkaz