स्क्रिप्ट बनाने के क्या फायदे हैं?


97

अपने अधिकांश प्रोग्रामिंग करियर के लिए, मैंने जो भी IDE काम कर रहा है, उसमें "बिल्ड / कंपाइल / रन" कमांड का उपयोग किया है ताकि मैं एक रन करने योग्य प्रोग्राम तैयार कर सकूं। यह एक बटन है, बहुत आसान है। जैसा कि मैंने विभिन्न भाषाओं और रूपरेखाओं के बारे में अधिक जानकारी प्राप्त की है, हालांकि, मुझे प्रोजेक्ट बनाने के लिए "स्क्रिप्ट बनाने" (ANT, Maven, Gradle, इत्यादि) की अधिक से अधिक चर्चा होती है। इनमें से मेरी समझ यह है कि वे संकलक / लिंकर / जादुई-प्रोग्राम निर्माता के लिए निर्देश हैं जो कॉन्फ़िगरेशन विवरण निर्दिष्ट करते हैं - minutiae।

मुझे याद है कि स्कूल में मेकफाइल्स लिखना वापस आता था, लेकिन मुझे तब कोई विशेष फायदा नहीं हुआ (हमने केवल यूनिक्स टर्मिनल में लिखते समय उनका उपयोग किया था, जहां आईडीई के साथ यह "बिल्ड" बटन मौजूद नहीं था)। इसके अलावा, मैंने यहां अन्य प्रश्न देखे हैं जो चर्चा करते हैं कि कैसे स्क्रिप्ट का निर्माण आपके कार्यक्रम को बनाने से अधिक कर सकता है - वे मेजबान मशीन की परवाह किए बिना यूनिट परीक्षण और सुरक्षित संसाधनों को चला सकते हैं

मैं यह महसूस नहीं कर सकता कि स्क्रिप्ट का निर्माण एक डेवलपर के रूप में समझने के लिए महत्वपूर्ण है, लेकिन मैं एक सार्थक स्पष्टीकरण चाहूंगा; मुझे स्क्रिप्ट बनाने / लिखने का उपयोग क्यों करना चाहिए?

बिल्ड स्क्रिप्ट और बिल्ड सर्वर की जिम्मेदारियां उस भूमिका की चर्चा करती हैं जो इसे व्यापक दायरे में निभाती है। मैं एक बिल्ड स्क्रिप्ट बनाम एक IDE के "बिल्ड / रन" कमांड या इसी तरह की सरल विधियों द्वारा दिए गए विशिष्ट लाभों की तलाश कर रहा हूं।


18
यहाँ जवाबों ने सब कुछ बहुत अच्छी तरह से कवर किया है, लेकिन मैं इस तथ्य का उल्लेख करना चाहता था कि जब आप अपने आईडीई में "रन" बटन पर क्लिक करते हैं, तो यह (लगभग हमेशा) एक निर्माण स्क्रिप्ट निष्पादित करता है जो आपकी आईडीई उत्पन्न करता है। अपनी खुद की बिल्ड स्क्रिप्ट लिखने से आपको प्रक्रिया पर अधिक नियंत्रण मिलता है।
वुडरो बारलो

6
अपनी स्वयं की बिल्ड स्क्रिप्ट को लिखने और साझा करने का अर्थ यह भी है कि कोई भी इसे उसी प्रक्रिया के साथ बना सकता है, जब आपकी प्रक्रिया किसी अन्य व्यक्ति के आईडीई का उपयोग करने पर भी हो। यह स्थिरता के साथ मदद करता है।
वुड्रो बार्लो


1
स्क्रिप्ट का निर्माण अक्सर होता है important to understand as a developer, हालांकि निश्चित रूप से हमेशा नहीं। यहां तक ​​कि वातावरण में जहां स्क्रिप्ट का निर्माण व्यावहारिक आवश्यकताएं हैं, कई "डेवलपर्स" उनके बारे में थोड़ी भी परवाह नहीं करेंगे। लेकिन डेवलपर्स के बजाय स्क्रिप्ट 'बिल्डरों' के लिए महत्वपूर्ण हैं। पिछली जगहों पर मैंने काम किया, अधिकांश डेवलपर्स के पास स्क्रिप्ट बनाने के लिए व्यावहारिक रूप से शून्य कनेक्शन था।
user2338816

3
"बिल्ड" बटन के साथ आईडीई का उपयोग करने वाला हर कोई नहीं
व्लादिमीर स्टार्कोव

जवाबों:


112

स्वचालन।

जब आप विकसित कर रहे हैं, केवल सबसे सरल परियोजनाओं में डिफ़ॉल्ट "बिल्ड" बटन होगा वह सब कुछ करें जो आपको इसे करने की आवश्यकता है; आपको एपीआई से एपीआई बनाने, डॉक्स जेनरेट करने, बाहरी संसाधनों से लिंक करने, सर्वर में बदलाव को लागू करने आदि की आवश्यकता हो सकती है। कुछ आईडीई आपको अतिरिक्त चरणों या बिल्डरों को जोड़कर बिल्ड प्रक्रिया को अनुकूलित करने की अनुमति देते हैं, लेकिन इसका मतलब केवल यही है कि आप हैं आईडीई जिंसों के माध्यम से अपनी बिल्ड स्क्रिप्ट तैयार करना।

लेकिन एक प्रणाली विकसित करना न केवल कोड लिखना है। इसमें कई चरण शामिल हैं। एक आईडीई स्वतंत्र स्क्रिप्ट को स्वचालित रूप से निष्पादित किया जा सकता है, जिसका अर्थ है:

  • जब आप संस्करण नियंत्रण में बदलाव करते हैं, तो सर्वर द्वारा एक नया बिल्ड स्वचालित रूप से लॉन्च किया जा सकता है। यह सुनिश्चित करेगा कि आप निर्माण के लिए आवश्यक कुछ भी करना नहीं भूल गए हैं।

  • इसी तरह, बिल्ड हो जाने के बाद, परीक्षण यह देखने के लिए स्वचालित रूप से चलाया जा सकता है कि क्या आपने कुछ तोड़ दिया है।

  • अब बाकी संगठन (QA, sysadmins) का एक निर्मित उत्पाद है

    क) नियंत्रण संस्करण से बस पूरी तरह से प्रतिलिपि प्रस्तुत करने योग्य है।

    बी) उन सभी के लिए आम है।

यहां तक ​​कि जब मैं एक आदमी टीम के रूप में काम कर रहा हूं तो मैंने उस उद्देश्य के लिए स्क्रिप्ट का उपयोग किया है; जब मैंने तय किया था कि मैं SVN के लिए प्रतिबद्ध हूं, SVN को किसी अन्य निर्देशिका में वापस निर्यात करें और समाधान उत्पन्न करने के लिए बिल्ड स्क्रिप्ट का उपयोग करें, जो तब प्रीप्रोडक्शन सिस्टम और बाद में प्रोडक्शन में जाएगा। अगर कुछ हफ़्ते बाद (मेरे स्थानीय कोडबेस के साथ पहले से ही बदल गया) किसी ने बग की शिकायत की, तो मुझे पता था कि सिस्टम को ठीक से डिबग करने के लिए मुझे एसवीएन संशोधन करना होगा।


4
यह सबसे अच्छा जवाब IMHO है। हर कोई अपने विचार के साथ सही है, लेकिन यह वास्तव में दिखाता है कि आप स्क्रिप्ट क्यों बनाना चाहते हैं। क्योंकि वे स्वचालन का समर्थन करते हैं जो आगे बढ़ रहा है क्योंकि आप परियोजना का विस्तार करते हैं, जिससे आप समय की बचत करेंगे।
एलेक्सस

16
@ एलेक्सस न केवल समय, बल्कि गूंगा गलतियों, भी। ;) "पुनरावृत्ति बोरियत की ओर ले जाती है। ऊब भयानक गलतियों की ओर ले जाती है। भयानक गलतियों की ओर ले जाती है, 'काश मैं अभी भी ऊब गया था।' "(आप समय में गूंगा गलतियों को भी माप सकते हैं, लेकिन यह महसूस करना महत्वपूर्ण है कि यह आपको कई कारणों से समय बचा रहा है।)
jpmc26

@ jpmc26 वहाँ किया जा रहा है कि: डी
एलेक्सस

2
यहां तक ​​कि एक-आदमी की परियोजनाओं के लिए, "अलग निर्देशिका में निर्माण" को स्वचालित करने के लिए एक स्थानीय जेनकींस सर्वर चलाने से मदद मिल सकती है। मैं विंडोज के तहत कुछ पर काम कर रहा हूं जिसे मुझे क्रॉस-कंपाइल की भी पुष्टि करने की आवश्यकता है, इसलिए जेनकिंस का निर्माण और परीक्षण चलाना, फिर क्रॉस-संकलित संस्करण का निर्माण करना मुझे बहुत अधिक आत्मविश्वास (और कुशल, निश्चित रूप से!) बनाता है जब मुझे ज़रूरत होती है! बग फिक्स जारी।
केन YN

4
@ जोनासग्रो ऑटोमेशन सबसे बड़े चरों में से एक लेता है: इंसान।
कर्टिसहैक्स

34

कोड की तरह, एक निर्माण स्क्रिप्ट को कंप्यूटर द्वारा निष्पादित किया जाता है। निर्देश के एक सेट के बाद कंप्यूटर असाधारण रूप से अच्छे हैं । वास्तव में, (सेल्फ-मॉडिफाइंग कोड के बाहर), कंप्यूटर एक ही तरह से दिए गए निर्देशों के समान अनुक्रम को निष्पादित करेंगे, उसी इनपुट को दिया जाएगा। यह स्थिरता के स्तर को वितरित करता है, ठीक है, केवल एक कंप्यूटर मैच कर सकता है।

इसके विपरीत, हम पानी से भरे हुए मांस को नीचे दिए गए चरणों के अनुसार ले जाते हैं। कि pesky विश्लेषणात्मक मस्तिष्क में यह सब कुछ आता है पर सवाल करने की प्रवृत्ति है। "ओह ... मुझे इसकी आवश्यकता नहीं है", या "क्या मुझे वास्तव में इस ध्वज का उपयोग करना है? एह ... मैं इसे अनदेखा करूंगा।" इसके अलावा, हममें शालीनता लाने की प्रवृत्ति होती है। एक बार जब हम कुछ बार कुछ कर लेते हैं, तो हम विश्वास करना शुरू कर देते हैं कि हम निर्देशों को जानते हैं, और निर्देश पत्र को देखना नहीं है।

"व्यावहारिक प्रोग्रामर" से:

इसके अलावा, हम परियोजना पर स्थिरता और पुनरावृत्ति सुनिश्चित करना चाहते हैं। मैनुअल प्रक्रियाएं बदलने के लिए स्थिरता छोड़ती हैं; दोहराव की गारंटी नहीं है, खासकर अगर प्रक्रिया के पहलू अलग-अलग लोगों द्वारा व्याख्या के लिए खुले हैं।

इसके अलावा, हम HILARIOUSLY निर्देशों को निष्पादित करने में सुस्त हैं (कंप्यूटर की तुलना में)। एक बड़ी परियोजना पर, सैकड़ों फ़ाइलों और कॉन्फ़िगरेशन के साथ, एक निर्माण प्रक्रिया में सभी चरणों को मैन्युअल रूप से निष्पादित करने में वर्षों लगेंगे।

मैं आपको एक वास्तविक दुनिया का उदाहरण दूंगा। मैं कुछ एम्बेडेड सॉफ्टवेयर काम कर रहा था, जहां अधिकांश कोड कुछ अलग हार्डवेयर प्लेटफॉर्म पर साझा किए गए थे। प्रत्येक प्लेटफ़ॉर्म में अलग-अलग हार्डवेयर थे, लेकिन अधिकांश सॉफ्टवेयर एक जैसे थे। लेकिन कुछ टुकड़े थे जो प्रत्येक हार्डवेयर के लिए विशिष्ट थे। आदर्श रूप से, आम टुकड़ों को एक पुस्तकालय में रखा जाएगा और प्रत्येक संस्करण में जोड़ा जाएगा। हालांकि, आम टुकड़ों को एक साझा पुस्तकालय में संकलित नहीं किया जा सकता है। इसे हर अलग विन्यास के साथ संकलित किया जाना था।

सबसे पहले, मैंने मैन्युअल रूप से प्रत्येक कॉन्फ़िगरेशन को संकलित किया। केवल कॉन्फ़िगरेशन के बीच स्विच करने में कुछ सेकंड लगते हैं, और यह एक बड़ा दर्द नहीं था। परियोजना के अंत में, कोड के साझा हिस्से में एक महत्वपूर्ण दोष की खोज की गई थी, जहां एक उपकरण अनिवार्य रूप से संचार बस को ले जाएगा। ये था BAD! सच में ख़राब। मुझे कोड में बग मिला, इसे ठीक किया, और हर संस्करण को फिर से जोड़ दिया। एक को छोड़कर। निर्माण प्रक्रिया के दौरान, मैं विचलित हो गया, और एक भूल गया। बायनेरिज़ रिलीज़ हुआ, मशीन का निर्माण किया गया, और एक दिन बाद मुझे एक फोन कॉल आया, जिसमें मशीन ने जवाब देना बंद कर दिया। मैं इसकी जांच करता हूं, और पता चला कि एक डिवाइस ने बस को लॉक कर दिया था। "लेकिन मैंने उस बग को ठीक कर दिया!"।

मैंने इसे ठीक कर लिया है, लेकिन यह उस बोर्ड पर अपना रास्ता नहीं खोज पाया। क्यों? क्योंकि मेरे पास एक स्वचालित निर्माण प्रक्रिया नहीं थी जो 1 क्लिक के साथ हर एक संस्करण का निर्माण करती थी।


2
और आप कॉफी के लिए जा सकते हैं जबकि बिल्ड स्क्रिप्ट चल रही है!
पीटर मोर्टेंसन

15

यदि आप कभी भी करना चाहते हैं, तो <compiler> **/*.<extension>स्क्रिप्ट का निर्माण थोड़ा उद्देश्य से करें (हालांकि कोई यह तर्क दे सकता है कि यदि आप एक Makefileपरियोजना को देखते हैं जिसे आप जानते हैं कि आप इसे बना सकते हैं make)। बात यह है - गैर-तुच्छ परियोजनाओं को आमतौर पर इससे अधिक की आवश्यकता होती है - बहुत कम से कम, आपको आमतौर पर पुस्तकालयों को जोड़ने की आवश्यकता होगी और (परियोजना के परिपक्वता के रूप में) बिल्ड मापदंडों को कॉन्फ़िगर करें।

आईडीई आमतौर पर कम से कम विन्यास है - लेकिन अब निर्माण प्रक्रिया आईडीई-विशिष्ट विकल्पों पर निर्भर करती है। यदि आप ग्रहण का उपयोग कर रहे हैं , तो ऐलिस नेटबीन्स को पसंद करता है , और बॉब इंटेलीज आईडीईए का उपयोग करना चाहता है , आप कॉन्फ़िगरेशन को साझा नहीं कर सकते हैं, और जब आप में से एक स्रोत नियंत्रण में बदलाव को धक्का देता है, तो उन्हें आईडीई-निर्मित कॉन्फ़िगरेशन को मैन्युअल रूप से संपादित करने की आवश्यकता होती है। अन्य डेवलपर्स की फ़ाइलें, या अन्य डेवलपर्स को सूचित करें ताकि वे इसे स्वयं करेंगे (जिसका अर्थ है कि ऐसे कमिट होंगे जहां आईडीई कॉन्फ़िगरेशन कुछ आईडीई के लिए गलत है ...)।

आपको यह भी पता लगाने की आवश्यकता है कि टीम द्वारा उपयोग किए जाने वाले आईडीई में से प्रत्येक में वह परिवर्तन कैसे करें, और यदि उनमें से कोई भी उस विशेष सेटिंग का समर्थन नहीं करता है ...

अब, यह समस्या संस्कृति-निर्भर है - आपके डेवलपर्स को आईडीई की पसंद नहीं होने के लिए स्वीकार्य हो सकता है। लेकिन जिन डेवलपर्स को आईडीई के साथ अनुभव होता है वे आमतौर पर इसका उपयोग करते समय अधिक खुश और कुशल दोनों होते हैं, और टेक्स्ट-एडिटर उपयोगकर्ता अपने पसंदीदा टूल के बारे में धार्मिक रूप से उत्साह प्राप्त करते हैं, इसलिए यह उन स्थानों में से एक है जहां आप डेवलपर्स को स्वतंत्रता देना चाहते हैं। - और बिल्ड सिस्टम आपको बस ऐसा करने की अनुमति देते हैं। कुछ लोगों के पास एक बिल्ड सिस्टम वरीयता हो सकती है, लेकिन यह लगभग आईडीई / संपादक वरीयताओं के रूप में कट्टर नहीं है ...

यहां तक ​​कि अगर आपको सभी डेवलपर्स को एक ही आईडीई का उपयोग करने के लिए मिलता है - सौभाग्य का उपयोग करने के लिए बिल्ड सर्वर को आश्वस्त करना ...

अब, यह सरल निर्माण प्रक्रिया अनुकूलन के लिए है, जो IDE के लिए अच्छा GUI प्रदान करते हैं। यदि आप अधिक जटिल सामान चाहते हैं - जैसे संकलन से पहले पूर्व-प्रसंस्करण / ऑटो-जनरेटिंग स्रोत फ़ाइलें - आपको आमतौर पर आईडीई के कॉन्फ़िगरेशन के अंदर कुछ मूल पाठ क्षेत्र में एक पूर्व-निर्मित स्क्रिप्ट लिखना होगा। कौन से सिस्टम का निर्माण आपको अभी भी उस हिस्से को कोड करना होगा, लेकिन आप इसे वास्तविक संपादक में कर सकते हैं जिसे आप कोड लिखते हैं, और अधिक महत्वपूर्ण बात: बिल्ड सिस्टम का ढांचा आमतौर पर इन लिपियों के आयोजन के लिए कुछ सहायता प्रदान करता है।

अंत में - बिल्ड सिस्टम केवल प्रोजेक्ट के निर्माण से अधिक के लिए अच्छे हैं - आप उन्हें अन्य कार्यों को करने के लिए प्रोग्राम कर सकते हैं जो टीम में सभी को प्रदर्शन करने की आवश्यकता हो सकती है। में रूबी ऑन रेल्स , उदाहरण के लिए, वहाँ डेटाबेस माइग्रेशन चल रहा है, अस्थायी फ़ाइलें, आदि की सफाई का निर्माण प्रणाली में इन कार्यों को लाना के लिए के लिए प्रणाली कार्यों का निर्माण कर रहे हैं सुनिश्चित करता है कि टीम के सभी व्यक्तियों के लिए उन्हें लगातार कर सकते हैं।


2
यह अलग आईडीई की बात नहीं है। कुछ डेवलपर्स सभी प्रकारों के आईडीई से घृणा और घृणा करते हैं।
डेविड हैमेन

2
@David Hammen मैं इन डेवलपर्स में से एक हूं (हालाँकि मैंने अपने Vim को इतनी मेहनत से कॉन्फ़िगर किया है कि यह संभव है कि मैंने इसे IDE में बदल दिया हो ...), और उस अनुच्छेद को लिखते समय मैं स्वतः "संपादकों" को लिख रहा था और इसे IDE पर ठीक करें, क्योंकि मुझे लगता है कि IDE पर स्थिरता मेरे उत्तर का एक महत्वपूर्ण हिस्सा है। पूछने वाला स्पष्ट रूप से आईडीई की दुनिया से आता है, और सवाल आईडीई-कम विकास के बारे में बात करता है क्योंकि कुछ ऐसा करने के लिए मजबूर किया जाता है जब कोई उचित आईडीई उपलब्ध नहीं होता है। इस उत्तर का उद्देश्य यह दिखाना है कि आईडीई उपयोगकर्ताओं की विशुद्ध रूप से बनाई गई टीमों के लिए भी बिल्ड सिस्टम कैसे फायदेमंद हैं।
इदं आर्ये

मैं भी उन डेवलपर्स में से एक हूं। मैं नहीं चाहता कि मेरी उंगलियों को कीबोर्ड छोड़ना पड़े। ऐसा करने से मेरी विचार प्रक्रिया बाधित होती है।
डेविड हैमेन

1
मैं असहमत हूं। मैं आईडीई पसंद करता हूं। वे मुझे नाम, आसान लुक्स, रिफैक्टिंग, अच्छे यूआई की परवाह नहीं करने देते। मेरा मतलब है, अगर कोई आईडीई मेरे लिए ऐसा कुछ कर सकता है जो मैं अन्यथा सीक ऐक आदि के साथ करूंगा, तो मैं इसका उपयोग करता हूं।
ps95

मुद्दा यह है कि बिल्ड स्क्रिप्ट के साथ टीम पर प्रत्येक डेवलपर जो कुछ भी पसंद करता है, उसका उपयोग कर सकता है, जबकि आईडीई की बिल्ड कार्यक्षमता के साथ आप सभी को न केवल एक आईडीई का उपयोग करने के लिए मजबूर कर रहे हैं, बल्कि बहुत विशिष्ट आईडीई का उपयोग करने के लिए प्रोजेक्ट को कॉन्फ़िगर किया गया है (जब तक कि आप नहीं। यह कई आईडीई के लिए कॉन्फ़िगर किया गया है, और सौभाग्य कि सिंकिंग ...)
इदं आर्ये

13

कई आईडीई बस कुछ बनाने के लिए इस्तेमाल की जाने वाली कमांड को पैकेज करते हैं और फिर एक स्क्रिप्ट उत्पन्न करते हैं और इसे कॉल करते हैं!

उदाहरण के लिए, Visual Studio में, आप 'कमांड लाइन' बॉक्स में C ++ संकलन के लिए कमांड-लाइन पैरामीटर देख सकते हैं। यदि आप निर्माण आउटपुट को करीब से देखते हैं, तो आपको वह अस्थायी फ़ाइल दिखाई देगी जिसमें वह निर्माण स्क्रिप्ट है जो संकलन चलाने के लिए उपयोग की गई थी।

आजकल, यह सभी MSBuild है , लेकिन यह अभी भी सीधे IDE द्वारा चलाया जाता है।

तो आप कमांड लाइन का उपयोग करने का कारण यह है कि आप सीधे स्रोत पर जा रहे हैं और बीच के आदमी को छोड़ रहे हैं, एक बिचौलिया जिसे अपडेट किया गया है या आपको निर्भरता के एक ढेर की आवश्यकता है जो आप चाहते हैं या एक हेडलेस सर्वर की आवश्यकता नहीं है जो कि आपके निरंतर एकीकरण (CI) सर्वर के रूप में कार्य करता है।

इसके अलावा, आपकी स्क्रिप्ट सामान्य डेवलपर-उन्मुख चरणों की तुलना में अधिक होती हैं जिन्हें वे डिज़ाइन करते हैं। उदाहरण के लिए, एक निर्माण के बाद, आप अपने बायनेरिज़ को पैक करके एक विशेष स्थान पर कॉपी कर सकते हैं, या एक इंस्टॉलर पैकेज बनाया जा सकता है, या उन पर एक डॉक्यूमेंटेशन टूल चला सकते हैं। कई अलग-अलग कार्य एक CI सर्वर द्वारा किए जाते हैं जो एक डेवलपर मशीन पर निरर्थक होते हैं, इसलिए जब आप एक IDE प्रोजेक्ट बना सकते हैं, जो इन सभी चरणों को पूरा करता है, तो आपको उनमें से दो को बनाए रखना होगा - डेवलपर्स के लिए एक परियोजना और बिल्ड के लिए एक और। कुछ निर्माण कार्य (उदाहरण के लिए स्थैतिक विश्लेषण) एक लंबा समय ले सकते हैं जिसे आप डेवलपर परियोजनाओं के लिए नहीं चाहते हैं।

संक्षेप में, यह सिर्फ आसान है - एक स्क्रिप्ट बनाएं जिसे आप चाहते हैं और कमांड लाइन या बिल्ड सर्वर कॉन्फ़िगरेशन को बंद करने के लिए त्वरित और सरल है।


9
make

याद रखने और टाइप करने में बहुत आसान है

gcc -o myapp -I/include/this/dir -I/include/here/as/well -I/dont/forget/this/one src/myapp.c src/myapp.h src/things/*.c src/things/*.h

और परियोजनाओं में बहुत जटिल संकलन कमांड हो सकते हैं। एक बिल्ड स्क्रिप्ट में केवल उन चीजों को फिर से जोड़ने की क्षमता होती है जो बदल गईं। यदि आप एक साफ निर्माण करना चाहते हैं,

make clean

एक बार और प्रत्येक जगह को याद रखने की कोशिश करने से ठीक से सेट होने के लिए आसान और अधिक विश्वसनीय है जो एक मध्यवर्ती फ़ाइल का उत्पादन किया गया हो सकता है।

बेशक, अगर आप एक आईडीई का उपयोग करते हैं, तो बिल्ड या क्लीन बटन को क्लिक करना आसान है। हालांकि, कर्सर को स्क्रीन पर किसी विशिष्ट स्थान पर ले जाना स्वचालित रूप से करना अधिक कठिन है, खासकर जब खिड़की चलती है, तो यह उस स्थान पर स्थानांतरित हो सकती है, क्योंकि यह एक साधारण पाठ कमांड को स्वचालित करना है।


4

और कैसे करोगे? एक लंबी कमांड लाइन कमांड को निर्दिष्ट करने का एकमात्र तरीका है।

एक और कारण यह है कि मेकफाइल्स वृद्धिशील संकलन की अनुमति देता है, जो संकलन समय को बहुत अधिक गति देता है।

Makefiles एक बिल्ड प्रोसेस क्रॉस-प्लेटफॉर्म भी बना सकते हैं। CMake प्लेटफॉर्म के आधार पर विभिन्न बिल्ड स्क्रिप्ट बनाता है।

संपादित करें:

आईडीई के साथ, आप चीजों को करने के एक विशेष तरीके से बंधे होते हैं। बहुत से लोग कई IDE जैसी सुविधाओं के बावजूद भी vim या emacs का उपयोग नहीं करते हैं। वे ऐसा इसलिए करते हैं क्योंकि वे चाहते हैं कि ये संपादक जो शक्ति प्रदान करें। आईडीई का उपयोग नहीं करने वालों के लिए बिल्ड स्क्रिप्ट आवश्यक है।

यहां तक ​​कि एक आईडीई का उपयोग करने वालों के लिए, आप वास्तव में यह जानना चाहते हैं कि क्या हो रहा है, इसलिए बिल्ड स्क्रिप्ट आपको कार्यान्वयन के निम्न विवरण प्रदान करती है जो कि जीयूआई दृष्टिकोण नहीं है।

आईडीई के स्वयं के उपयोग अक्सर स्क्रिप्ट को आंतरिक रूप से भी बनाते हैं; रन बटन मेक कमांड चलाने का एक और तरीका है।


4

उपरोक्त उत्तर बहुत सारे अच्छे ग्राउंड को कवर करते हैं, लेकिन एक वास्तविक दुनिया का उदाहरण जिसे मैं जोड़ना चाहता हूं (कि मैं कर्म के कारण टिप्पणी के रूप में नहीं जोड़ सकता), एंड्रॉइड प्रोग्रामिंग से है।

मैं एक पेशेवर Android / iOS / विंडोज फोन डेवलपर हूं और मैं गूगल सेवाओं एपीआई (ज्यादातर गूगल मैप्स) एक का उपयोग बहुत

एंड्रॉइड में, इन सेवाओं के लिए आवश्यक है कि मैं एक कीस्टोर , या एक प्रकार की डेवलपर आईडी फ़ाइल जोड़ूं जो Google को बताए कि मैं वह हूं जो मैं कहता हूं कि मैं एक डेवलपर कंसोल पर हूं। यदि मेरा ऐप एक अलग कीस्टोर के साथ संकलित किया गया है, तो ऐप का Google मैप्स अनुभाग काम नहीं करेगा।

डेवलपर कंसोल में एक दर्जन कीस्टोर्स को जोड़ने और प्रबंधित करने के बजाय, जिनमें से केवल एक को वास्तव में ऐप को अपडेट करने के लिए उपयोग किया जा सकता है, मैं इस कीस्टोर को हमारे सुरक्षित रेपो में शामिल करता हूं और एंड्रॉइड स्टूडियो को बताने के लिए ग्रेड का उपयोग करता हूं कि क्या कीस्टोर इस बिल्डिंग के लिए उपयोग करना है "डिबग" या "रिलीज़"। अब, मुझे केवल अपने Google डेवलपर कंसोल में दो कीस्टोर्स जोड़ना है, एक "डीबग" के लिए और दूसरा "रिलीज़" के लिए, और मेरी टीम के सभी सदस्य रेपो का क्लोन बना सकते हैं और देव में जाने के बिना विकसित होने का अधिकार प्राप्त कर सकते हैं सांत्वना और उनके विशेष कीस्ट के SHA हैश, या बदतर को जोड़ने, मुझे उन्हें प्रबंधित करना। इससे प्रत्येक टीम के सदस्य को हस्ताक्षर करने वाले कीस्टॉर की एक प्रति देने का अतिरिक्त लाभ होता है, जिसका अर्थ है कि अगर मैं कार्यालय से बाहर हूं और एक अद्यतन निर्धारित है, तो एक टीम के सदस्य को केवल निर्देशों की एक बहुत छोटी सूची का पालन करने की आवश्यकता है ताकि उन्हें धक्का दिया जा सके। अपडेट करें।

इस तरह स्वचालन का निर्माण करता है, जिसमें निरंतरता बनी रहती है, और जब हम एक नया डेवलपर, एक नई मशीन प्राप्त करते हैं, या जब हमें एक मशीन को फिर से छवि देना होता है, तो सेट-अप समय में कटौती करके तकनीकी ऋण को कम करता है।


1

स्क्रिप्ट लाभ बनाएँ:

  • परिवर्तन कोड की तरह दिखते हैं (उदाहरण के लिए, git diff कमांड में), संवाद में अलग-अलग चेक किए गए विकल्पों की तरह नहीं

  • एक साधारण बिल्ड की तुलना में अधिक आउटपुट बनाना

मेरी पिछली कुछ परियोजनाओं में, मैंने बिल्ड स्क्रिप्ट का उपयोग किया है:

  • प्रोजेक्ट डॉक्यूमेंटेशन (डॉकजेसन बेस्ड) जेनरेट करें
  • निर्माण
  • इकाई परीक्षण चलाएं
  • यूनिट टेस्ट कवरेज रिपोर्ट जनरेट करें
  • एक रिलीज संग्रह में बायनेरिज़ पैक करें
  • आंतरिक रिलीज़ नोट्स उत्पन्न करें ("गिट लॉग" संदेशों पर आधारित)
  • स्वचालित परीक्षण

0

अक्सर आप "बिल्ड" बटन को स्वचालित तरीके से कह सकते हैं (दृश्य स्टूडियो कमांड लाइन तर्क स्वीकार करता है, उदाहरण के लिए)। लोग बिल्ड स्क्रिप्ट लिखते हैं जैसे ही उन्हें कुछ चाहिए जो बिल्ड बटन प्रदान नहीं कर सकता है।

उदाहरण के लिए, अधिकांश IDE आपको केवल एक ही समय में एक प्लेटफ़ॉर्म बनाने देंगे। या एक समय में केवल एक भाषा । फिर आप निर्मित आउटपुट के साथ क्या करते हैं: क्या आपका आईडीई उन्हें एक स्थापित पैकेज में रोल कर सकता है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.