एसबीटी (सॉफ्टवेयर)

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

एसबीटी स्काला परियोजनाओं के निर्माण और प्रबंधन की प्रक्रिया को आसान और कुशल बनाने के लिए सुविधाओं की एक विस्तृत श्रृंखला प्रदान करता है। कुछ प्रमुख विशेषताओं में शामिल हैं:


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

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

इतिहास
एसबीटी को मूल रूप से 2008 में मार्क हर्राह द्वारा एक ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया गया था। इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में नई सुविधाएँ, बग फिक्स और संवर्द्धन शामिल हैं। यहां महत्वपूर्ण रिलीज़ों के साथ-साथ उनके द्वारा पेश किए गए प्रमुख परिवर्तनों और नवाचारों का अवलोकन दिया गया है:
 * 1) एसबीटी 0.3.2 (2008): यह एसबीटी की पहली आधिकारिक रिलीज़ थी। इसने परियोजना परिभाषा, निर्भरता प्रबंधन और संकलन जैसी प्राथमिक विशेषताएं पेश कीं।
 * 2) एसबीटी 0.7 (2009): स्काला परियोजनाओं के निर्माण और प्रबंधन के लिए बुनियादी ढांचा स्थापित किया गया। मुख्य विशेषताओं में वृद्धिशील संकलन, निर्भरता प्रबंधन और सीधा कार्य निष्पादन शामिल हैं।
 * 3) एसबीटी 0.10 (2011): बिल्ड डेफिनिशन सिंटैक्स में एक महत्वपूर्ण बदलाव पेश किया गया, जिससे यह अधिक अभिव्यंजक और लचीला बन गया। प्रदर्शन, निर्भरता प्रबंधन और कॉन्फ़िगरेशन में भी वृद्धि हुई।
 * 4) एसबीटी 0.12 (2012): मल्टी-मॉड्यूल परियोजनाओं के लिए बेहतर समर्थन, कस्टम कॉन्फ़िगरेशन को परिभाषित करने की क्षमता और सरलीकृत प्लगइन विकास।
 * 5) एसबीटी 0.13 (2013): प्रयोज्यता और प्रदर्शन पर ध्यान केंद्रित। इस संस्करण में एक्टिवेटर पेश किया गया, प्रोजेक्ट बनाने और प्रबंधित करने के लिए एक वेब-आधारित टूल। अन्य विशेषताओं में वृद्धिशील मैक्रो संकलन, बिल्ड परिभाषा त्रुटियों की बेहतर हैंडलिंग और विभिन्न प्रदर्शन अनुकूलन शामिल हैं। 0.13 अगले चार वर्षों तक मुख्य एसबीटी संस्करण बना रहा।
 * 6) एसबीटी 1.0 (2017): प्रदर्शन और स्थिरता पर ध्यान केंद्रित करते हुए एसबीटी कोडबेस में पर्याप्त बदलाव किए गए, लेकिन यथासंभव पुराने संस्करणों के साथ संगतता बनाए रखने का भी प्रयास किया गया। नई सुविधाओं में कार्यों और सेटिंग्स को परिभाषित करने के लिए एकीकृत स्लैश सिंटैक्स, बेहतर निर्भरता प्रबंधन और बिल्ड परिभाषाओं के लिए उपयोग किए जाने वाले भाषा संस्करण के रूप में स्काला 2.12 शामिल हैं। इसके अलावा, नए जिंक 1.0 वृद्धिशील कंपाइलर पर स्विच करने से वृद्धिशील संकलन प्रदर्शन में और वृद्धि हुई।
 * 7) एसबीटी 1.1 (2018): इस रिलीज ने एसबीटी सर्वर लॉन्च किया, जिससे आईडीई और अन्य टूल भाषा सर्वर प्रोटोकॉल (एलएसपी) के माध्यम से एसबीटी के साथ बातचीत कर सके। इसने Scala.js के लिए क्रॉस-बिल्डिंग समर्थन भी जोड़ा और स्काला मूल निवासी और विभिन्न कार्यों के प्रदर्शन में सुधार हुआ।
 * 8) एसबीटी 1.3 (2019): इस संस्करण ने कौरसियर को अपनाकर निर्भरता समाधान को तेज करके उपयोगकर्ता अनुभव में काफी सुधार किया है डिफ़ॉल्ट निर्भरता प्रबंधक के रूप में। आगे के संवर्द्धन में बिल्ड कैशिंग तंत्र में सुधार और जेडीके 11 के लिए समर्थन शामिल है।
 * 9) एसबीटी 1.5 (2021): स्काला 3 के लिए समर्थन जोड़ा गया। बीएसपी (बिल्ड सर्वर प्रोटोकॉल) समर्थन में भी संवर्द्धन किया गया, आईडीई के साथ बेहतर एकीकरण सक्षम करना।
 * 10) एसबीटी 1.8 (2022): यह रिलीज़ कौरसियर में अपडेट लेकर आई और आइवी समर्थन में सुधार हुआ।
 * 11) एसबीटी 1.9 (2023): नए प्रोजेक्ट बनाने में मदद के लिए कौरसियर में अधिक अपडेट और एक टेक्स्ट-आधारित मेनू।

फ़ाइलें बनाएँ
एक एसबीटी बिल्ड को a का उपयोग करके परिभाषित किया जा सकता है  फ़ाइल नीचे इसका एक उदाहरण दिया गया है   निर्माण परिभाषा:

उदाहरण उपयोग
प्रत्येक बिल्ड कमांड के लिए एसबीटी लागू किया जा सकता है, या यदि कोई कमांड नहीं दिया गया है तो यह इंटरैक्टिव मोड में प्रवेश कर सकता है। वर्तमान बिल्ड के बिल्ड उत्पादों को साफ़ करने के लिए:

एक ही लाइन पर एकाधिक कमांड का उपयोग किया जा सकता है। Foo नामक एकल परीक्षण चलाने और फिर निर्यातित जार प्रकाशित करने के लिए:

विस्तारशीलता और एकीकरण
एसबीटी की कार्यक्षमता को प्लगइन आर्किटेक्चर के माध्यम से बढ़ाया जा सकता है। समुदाय-योगदान वाले प्लगइन्स हस्ताक्षर, पैकेजिंग, प्रकाशन और कलाकृतियों को जारी करने, ब्लॉग और डेटाबेस जैसी अन्य सेवाओं से जुड़ने या अन्य प्रौद्योगिकियों के साथ एकीकृत करने जैसे क्षेत्रों को कवर करते हैं।

IntelliJ IDEA और VS कोड दोनों अपने स्काला प्लगइन्स के माध्यम से sbt का समर्थन करते हैं। उन दोनों आईडीई में, प्रारंभिक एसबीटी बिल्ड फ़ाइलों के साथ एक नया प्रोजेक्ट बनाना संभव है, साथ ही यदि प्रोजेक्ट में पहले से ही एक एसबीटी बिल्ड फ़ाइल शामिल है, तो इसका उपयोग दिए गए आईडीई के लिए प्रोजेक्ट की कॉन्फ़िगरेशन उत्पन्न करने के लिए किया जा सकता है।

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

यह भी देखें

 * बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची