बिल्ड टूल क्या है?


130

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

हाल ही में मैं "बिल्ड टूल्स" नामक कुछ के बारे में सुन रहा हूं। मैंने सुना है कि वे लगभग सभी प्रकार के वास्तविक विश्व विकास में उपयोग किए जाते हैं। वे वास्तव में क्या हैं? उन्हें हल करने के लिए क्या समस्याएं हैं? पिछले चार वर्षों में मुझे कैसे कभी उनकी जरूरत नहीं पड़ी? क्या वे आईडीई से कमांड-लाइन छीन रहे हैं?

जवाबों:


117

निर्माण उपकरण क्या हैं?

बिल्ड टूल ऐसे प्रोग्राम हैं जो स्रोत कोड से निष्पादन योग्य एप्लिकेशन के निर्माण को स्वचालित करते हैं (उदाहरण के लिए एंड्रॉइड ऐप के लिए .apk)। बिल्डिंग में कोड को उपयोग करना, लिंक करना और पैकेजिंग करना एक उपयोगी या निष्पादन योग्य रूप में शामिल है।

मूल रूप से ऑटोमेशन का निर्माण विभिन्न प्रकार के कार्यों को स्क्रिप्ट करने या स्वचालित करने का कार्य है, जो सॉफ़्टवेयर डेवलपर अपनी दिन-प्रतिदिन की गतिविधियों में करते हैं:

  1. डाउनलोडिंग निर्भरताएँ।
  2. बाइनरी कोड में स्रोत कोड का संकलन।
  3. उस बाइनरी कोड को पैकेजिंग करें।
  4. परीक्षण चल रहा है।
  5. उत्पादन प्रणालियों के लिए तैनाती।

हम निर्माण उपकरण या स्वचालन का उपयोग क्यों करते हैं?

छोटी परियोजनाओं में, डेवलपर्स अक्सर निर्माण प्रक्रिया को मैन्युअल रूप से लागू करेंगे। यह बड़ी परियोजनाओं के लिए व्यावहारिक नहीं है, जहां भवन निर्माण की प्रक्रिया में क्या, किस क्रम में और किन निर्भरताएं हैं, इसका ट्रैक रखना बहुत कठिन है। एक स्वचालन उपकरण का उपयोग करने से निर्माण प्रक्रिया अधिक सुसंगत हो जाती है।

उपलब्ध विभिन्न निर्माण उपकरण (केवल कुछ नामकरण):

  1. जावा के लिए - चींटी, मावेन, ग्रैडल।
  2. .NET फ्रेमवर्क के लिए - NAnt
  3. सी # - MsBuild।

आगे पढ़ने के लिए आप निम्नलिखित लिंक देख सकते हैं:

1. स्वचालन का निर्माण

2. निर्माण स्वचालन सॉफ्टवेयर की सूची

धन्यवाद।


17

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

कारण जो आपने पहले नहीं सुने हैं, वह यह है कि आप पहले किसी व्यावसायिक वातावरण में काम नहीं कर रहे हैं। वहाँ सामान की एक पूरी है कि आप शायद सामना नहीं किया है कि आप एक वाणिज्यिक वातावरण के भीतर होगा, खासकर अगर आप सॉफ्टवेयर घरों में काम करते हैं।

जैसा कि दूसरों ने कहा है, आप उनका उपयोग कर रहे हैं, हालांकि, आपको उन पर विचार नहीं करना पड़ा है, क्योंकि आप शायद एक अलग तरीके से काम करने के सामान्य तरीके से काम कर रहे हैं।


10

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

विचार यह है कि अपने कोड को रचना, डिबगिंग इत्यादि से संकलन और पैकेजिंग के काम से अलग किया जाए।

एक निर्माण उपकरण कमांड पर या एक IDE के अंदर चलाया जा सकता है, दोनों आपके द्वारा ट्रिगर किया गया है। आपके कोड को एक रिपॉजिटरी से बाहर और एक साफ बिल्ड मशीन पर चेक करने के बाद निरंतर एकीकरण टूल द्वारा भी उनका उपयोग किया जा सकता है।

सी / सी ++ बनाने के लिए * निक्स वातावरण में इस्तेमाल किया जाने वाला एक प्रारंभिक कमांड टूल था।

जावा डेवलपर के रूप में, सबसे लोकप्रिय निर्माण उपकरण चींटी और मावेन हैं। दोनों को IDEs जैसे IntelliJ या Eclipse या NetBeans में चलाया जा सकता है। उन्हें क्रूज़ कंट्रोल या हडसन जैसे निरंतर एकीकरण उपकरणों द्वारा भी उपयोग किया जा सकता है।


6
अब, ग्रैडल का व्यापक रूप से उपयोग किया जाता है
असुर

मैं जहां बैठता हूं वहां से नहीं। मुझे ग्रैडल की जानकारी नहीं थी, इसलिए संदर्भ के लिए धन्यवाद।
duffymo

@duffymo क्या आप अंतिम पंक्ति पर विस्तार से बता सकते हैं। निरंतर एकीकरण क्या है? वे उपकरण बनाने से कैसे संबंधित हैं?
क़ाज़ी इरफ़ान

4

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

एक्लिप्स या विज़ुअल स्टूडियो भी बिल्ड सिस्टम (लेकिन एक आईडीई से अधिक) हैं, और दृश्य स्टूडियो के लिए हुड के तहत दृश्य स्टूडियो प्रोजेक्ट फ़ाइलों को पार्स करने के लिए अंतर्निहित msbuild है।

सभी बिल्ड सिस्टम की उत्पत्ति प्रसिद्ध 'मेक' की तरह लगती है।

विभिन्न भाषाओं के लिए बिल्ड सिस्टम हैं:

  1. C ++: बनाओ, cmake, premake
  2. जावा: चींटी + आइवी, मावेन, ग्रेडेल
  3. C #: msbuild

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


1

बिल्ड प्रोसेस कुछ बिल्ड टूल का उपयोग करके और बिल्ड बनाने के लिए किसी भी त्रुटि के लिए आपके स्रोत कोड को संकलित करने की एक प्रक्रिया है (जो कि परियोजना के निष्पादन योग्य संस्करण हैं)। हम (मुख्य रूप से डेवलपर्स) स्रोत कोड में कुछ संशोधन करते हैं और निर्माण प्रक्रिया के लिए उस कोड में चेक-इन करते हैं। बिल्ड प्रक्रिया के बाद यह दो परिणाम देता है: 1. या तो PASSES का निर्माण करें और आपको अपनी परियोजना का एक निष्पादन योग्य संस्करण मिल जाए (बिल्ड तैयार है)। 2. यह विफल हो जाता है और आपको कुछ त्रुटियां हो जाती हैं और निर्माण नहीं होता है।

विभिन्न प्रकार की बिल्ड प्रक्रिया है जैसे: 1. नाइटली बिल्ड 2. गेटेड बिल्ड 3. निरंतर एकीकरण बिल्ड आदि।

बिल्ड टूल मदद करता है और बिल्ड बनाने की प्रक्रिया को स्वचालित करता है।

* तो शॉर्ट बिल्ड में पूर्व-रिलीज़ प्रारूप में सॉफ़्टवेयर का एक संस्करण है जिसका उपयोग डेवलपर या विकास टीम द्वारा अपने उत्पाद के अंतिम परिणाम के लिए आत्मविश्वास हासिल करने के लिए किया जाता है ताकि उनके उत्पाद की निरंतर निगरानी और विकास प्रक्रिया के दौरान किसी भी मुद्दे को जल्दी हल किया जा सके। *


क्या आप कृपया नाइटली, गेटेड और कंटीन्यूअस इंटीग्रेशन बिल्ड के बारे में थोड़ा और बता सकते हैं?
क़ाज़ी इरफ़ान

@iamcreasy मैंने विभिन्न बिल्ड के बारे में स्पष्टीकरण के लिए आपके प्रश्न के संबंध में एक और उत्तर जोड़ा है। आप उस स्पष्टीकरण को नीचे पा सकते हैं। मैंने बिल्ड लिंक को बेहतर तरीके से समझने में आपकी मदद करने के लिए कुछ लिंक भी जोड़े हैं।
प्रकाश

1

ये विभिन्न प्रकार की प्रक्रियाएँ हैं जिनके द्वारा आप अपने निर्माण करवा सकते हैं।

1. सतत एकीकरण निर्माण:इसमें मुख्य रूप से डेवलपर्स अपने कोड में चेक-इन करते हैं और उसके ठीक बाद चेक-इन एक बिल्ड में हाल के परिवर्तनों के निर्माण के लिए शुरू होता है, इसलिए हमें यह पता होना चाहिए कि चेक-इन के बाद डेवलपर द्वारा किए गए परिवर्तन सही हैं या नहीं। यह छोटी परियोजनाओं या परियोजनाओं के घटकों के लिए पसंद किया जाता है। मामले में जहां कई टीमें परियोजना से जुड़ी हैं या बड़ी संख्या में हैं। एक ही प्रोजेक्ट पर काम करने वाले डेवलपर्स इस परिदृश्य को संभालना मुश्किल हो जाता है जैसे कि 'एन' नं। चेक-इन और बिल्ड कुछ बिंदुओं पर विफल हो जाता है, यह पता लगाना बेहद मुश्किल हो जाता है कि क्या एक मुद्दे के कारण या कई मुद्दों के साथ सभी टूट-फूट हुई है, इसलिए यदि पुराने मुद्दों को ठीक से संबोधित नहीं किया जाता है तो बाद में पता लगाना बहुत मुश्किल हो जाता है उस परिवर्तन के बाद हुए दोष।

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

3. नाइटली बिल्ड: इसे शेड्यूल्ड बिल्ड भी कहा जाता है। इस मामले में हम परिवर्तनों के निर्माण के लिए बिल्डरों को एक विशिष्ट समय के लिए चलाने के लिए शेड्यूल करते हैं। इस बिल्ड प्रक्रिया के दौरान पिछले बिल्ड से पिछले सभी अप्रयुक्त परिवर्तन बनाए गए हैं। यह अभ्यास तब किया जाता है जब हम कई बार जांच करना चाहते हैं, लेकिन अपने कोड में जांच के लिए हर बार एक बिल्ड नहीं चाहते हैं, इसलिए हमारे पास एक निश्चित समय या अवधि हो सकती है जिसमें हम चेक-इन कोड के निर्माण के लिए निर्माण शुरू कर सकते हैं।

इन बिल्ड के बारे में अधिक जानकारी नीचे के स्थान पर मिल सकती है।

बिल्ड में गेट-चेक

निरंतर एकीकरण बनाता है

संभवतः नए उपयोगकर्ताओं के लिए बनाया गया स्थिर सॉफ्टवेयर


0

आप उनका उपयोग कर रहे हैं - आईडीई एक बिल्ड टूल है। कमांड लाइन के लिए आप चीजों का उपयोग कर सकते हैं make

लोग एक रात के निर्माण जैसी चीजों के लिए कमांड लाइन टूल का उपयोग करते हैं - इसलिए सुबह एक हैंगओवर के साथ प्रोग्रामर ने महसूस किया कि कोड जो वह पुस्तकालयों के नवीनतम बिल्ड के साथ काम कर रहा है वह काम नहीं करता है!


11
आमतौर पर आईडीई एक बिल्ड टूल नहीं है, इसके बजाय यह एक बिल्ड टूल के साथ एकीकृत / कॉल करता है। उदाहरण के लिए Visual Studio normaly MSBuild कहता है।
जस्टिन

-1

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

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

"पिछले चार सालों में मुझे कैसे कभी उनकी ज़रूरत नहीं पड़ी"। शायद इसलिए कि आप एक कुशल प्रोग्रामर हैं।

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

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

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

सोचने समझने के अलावा कोई शॉर्टकट नहीं है।

फिर रिपॉजिटरी से ऑटो डाउनलोड होता है। आप कभी ऐसा क्यों करना चाहेंगे? आपको यह जानने की जरूरत है कि आप क्या डाउनलोड करते हैं, आप प्रोजेक्ट में क्या जोड़ते हैं। आप रिपॉजिटरी के संस्करणों में परिवर्तन का पता कैसे लगाते हैं? आपको जानना चाहिए। आप कुछ भी "ऑटो" नहीं कर सकते।

क्या होगा अगर हम साइकिल और बच्चे का परीक्षण करने के लिए एक छड़ी के साथ आंखों पर पट्टी बांधकर और बस यादृच्छिक रूप से इसके साथ चारों ओर मारा। ऐसा लगता है कि निर्माण उपकरण परीक्षण का विचार है।

मुझे खेद है कि कोई शॉर्टकट नहीं हैं https://en.wikipedia.org/wiki/Scientific_method और https://en.wikipedia.org/wiki/Analysis


आपका जवाब अविश्वसनीय रूप से एक सी दृष्टिकोण से पक्षपातपूर्ण है जहां यह एक बड़ी समस्या है। कंपाइलर चलाने से अधिक जटिल कुछ भी बनाने के लिए उपकरण आवश्यक हैं (फिर भी, जीसीसी एक बड़े पैमाने पर बी-शब्द है) और सख्त निर्भरता घोषणाओं के साथ निर्भरता प्रबंधन एक देवता है। सिर्फ इसलिए कि आप इसका उपयोग नहीं करते हैं इसका मतलब यह नहीं है कि ये गलत अवधारणाएं हैं। यदि आप सामान बनाने के लिए बस बैश स्क्रिप्ट का उपयोग कर रहे हैं, तो यह एक बिल्ड टूल भी है - बस एक बहुत अच्छा नहीं है। यदि आप हाथ से या विशेष रूप से विचार करके संकलित करते हैं, तो भगवान आपके लिए विभिन्न प्रणालियों में जटिल, दोहराए जाने योग्य बनाता है।
पुनरावर्तनीय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.