एसबीटी (सॉफ्टवेयर): Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Open-source build tool for Scala and Java projects}} {{about||SBT accounting software|ACCPAC|the television network|Sistema Brasileiro de Televisão}} {{Lo...")
 
No edit summary
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Open-source build tool for Scala and Java projects}}
{{short description|Open-source build tool for Scala and Java projects}}
{{about||SBT accounting software|ACCPAC|the television network|Sistema Brasileiro de Televisão}}
{{about||एसबीटी लेखा सॉफ्टवेयर|एसीसीपीएसी|टेलीविजन नेटवर्क|ब्राजीलियाई टेलीविजन प्रणाली}}
{{Lowercase title}}
 
{{Infobox software
{{Infobox software
| name                  = sbt
| name                  = sbt
Line 19: Line 19:
}}
}}


एसबीटी (मूल रूप से सिंपल बिल्ड टूल, आजकल अक्सर स्काला बिल्ड टूल के लिए माना जाता है या इसे अपने उचित नाम के रूप में उपयोग किया जाता है)<ref>{{Cite web |title=sbt Reference Manual — Frequently Asked Questions |url=https://www.scala-sbt.org/1.x/docs/Faq.html |access-date=2023-06-15 |website=www.scala-sbt.org}}</ref>) एक [[खुला स्रोत सॉफ्टवेयर]] है | ओपन-सोर्स [[ उपकरण बनाएं ]] स्पष्ट रूप से [[स्काला (प्रोग्रामिंग भाषा)]] और [[जावा (प्रोग्रामिंग भाषा)]] परियोजनाओं के लिए बनाया गया है। इसका उद्देश्य निर्माण, [[ संकलक ]], [[ परीक्षण स्वचालन ]] और पैकेजिंग अनुप्रयोगों, पुस्तकालयों और ढांचे की प्रक्रिया को सुव्यवस्थित करना है। एसबीटी अत्यधिक अनुकूलनीय है, जो डेवलपर्स को अपने प्रोजेक्ट की विशिष्ट आवश्यकताओं के अनुसार निर्माण प्रक्रिया को अनुकूलित करने की अनुमति देता है।
'''एसबीटी''' (मूल रूप से सरल बिल्ड टूल, आजकल प्रायः स्काला बिल्ड टूल के लिए माना जाता है या इसे अपने उचित नाम के रूप में उपयोग किया जाता है)<ref>{{Cite web |title=sbt Reference Manual — Frequently Asked Questions |url=https://www.scala-sbt.org/1.x/docs/Faq.html |access-date=2023-06-15 |website=www.scala-sbt.org}}</ref> [[खुला स्रोत सॉफ्टवेयर|ओपन-सोर्स सॉफ्टवेयर]] है जो स्पष्ट रूप से [[स्काला (प्रोग्रामिंग भाषा)|स्काला (प्रोग्रामिंग लैंग्वेज)]] और [[जावा (प्रोग्रामिंग भाषा)|जावा (प्रोग्रामिंग लैंग्वेज)]] प्रोजेक्ट के लिए बनाया गया है। अतः इसका उद्देश्य बिल्ड, [[ संकलक |कम्पाइलिंग]], [[ परीक्षण स्वचालन |परीक्षण स्वचालन]] और पैकेजिंग अनुप्रयोगों, लाइब्रेरी और संरचना की प्रक्रिया को सुव्यवस्थित करना है। एसबीटी अत्यधिक अनुकूलनीय है, जो डेवलपर्स को अपने प्रोजेक्ट की विशिष्ट आवश्यकताओं के अनुसार बिल्ड प्रक्रिया को अनुकूलित करने की अनुमति देता है।


एसबीटी स्काला परियोजनाओं के निर्माण और प्रबंधन की प्रक्रिया को आसान और कुशल बनाने के लिए सुविधाओं की एक विस्तृत श्रृंखला प्रदान करता है।<ref>{{Cite web |title=sbt Reference Manual — sbt Reference Manual |url=https://www.scala-sbt.org/1.x/docs/index.html |access-date=2023-06-15 |website=www.scala-sbt.org}}</ref> कुछ प्रमुख विशेषताओं में शामिल हैं:
अतः '''एसबीटी''' स्काला प्रोजेक्ट के बिल्ड और प्रबंधन की प्रक्रिया को सरल और कुशल बनाने के लिए सुविधाओं की विस्तृत श्रृंखला प्रदान करता है।<ref>{{Cite web |title=sbt Reference Manual — sbt Reference Manual |url=https://www.scala-sbt.org/1.x/docs/index.html |access-date=2023-06-15 |website=www.scala-sbt.org}}</ref> इस प्रकार से कुछ प्रमुख विशेषताओं में सम्मिलित हैं:


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


एसबीटी स्काला समुदाय में वास्तविक मानक|''वास्तविक'' निर्माण उपकरण है,<ref>{{Cite web |title=मिलकर बेहतर सॉफ्टवेयर बनाएं|url=https://github.com/search?utf8=%E2%9C%93&q=sbt&repo=&langOverride=&start_value=1&type=Repositories&language=Scala |access-date=2023-06-15 |website=GitHub |language=en}}</ref> उदाहरण के लिए, स्काला 2 और स्काला 3 कंपाइलरों द्वारा स्वयं उपयोग किया जाता है,<ref>{{Citation |title=Welcome! |date=2023-06-14 |url=https://github.com/scala/scala |access-date=2023-06-15 |publisher=The Scala Programming Language}}</ref><ref>{{Citation |title=Dotty |date=2023-06-14 |url=https://github.com/lampepfl/dotty |access-date=2023-06-15 |publisher=Programming Methods Laboratory EPFL}}</ref> [[प्ले फ्रेमवर्क]], और लाइकेस, एक लोकप्रिय शतरंज सर्वर। एसबीटी प्रोजेक्ट बूटस्ट्रैप्ड है - यह खुद को बनाने के लिए एसबीटी का उपयोग करता है और अपने कुत्ते का खाना खुद खाने को एक सकारात्मक विशेषता मानता है।
इस प्रकार से एसबीटी स्काला समुदाय में वास्तविक मानक उपकरण है,<ref>{{Cite web |title=मिलकर बेहतर सॉफ्टवेयर बनाएं|url=https://github.com/search?utf8=%E2%9C%93&q=sbt&repo=&langOverride=&start_value=1&type=Repositories&language=Scala |access-date=2023-06-15 |website=GitHub |language=en}}</ref> जिसका उपयोग, उदाहरण के लिए, स्वयं स्काला 2 और स्काला 3 कंपाइलर,<ref>{{Citation |title=Welcome! |date=2023-06-14 |url=https://github.com/scala/scala |access-date=2023-06-15 |publisher=The Scala Programming Language}}</ref><ref>{{Citation |title=Dotty |date=2023-06-14 |url=https://github.com/lampepfl/dotty |access-date=2023-06-15 |publisher=Programming Methods Laboratory EPFL}}</ref> [[प्ले फ्रेमवर्क]] और लोकप्रिय शतरंज सर्वर, लाइकेस द्वारा किया जाता है। अतः '''एसबीटी''' प्रोजेक्ट बूटस्ट्रैप्ड है - यह स्वयं को बनाने के लिए एसबीटी का उपयोग करता है और डॉगफूडिंग को एक धनात्मक विशेषता मानता है।


==इतिहास==
==इतिहास==
एसबीटी को मूल रूप से 2008 में मार्क हर्राह द्वारा एक ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया गया था।<ref>{{Cite web |title=sbt Reference Manual — Developer’s Guide (Work in progress) |url=https://www.scala-sbt.org/1.x/docs/Developers-Guide.html |access-date=2023-06-15 |website=www.scala-sbt.org}}</ref> इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में नई सुविधाएँ, बग फिक्स और संवर्द्धन शामिल हैं। यहां महत्वपूर्ण रिलीज़ों के साथ-साथ उनके द्वारा पेश किए गए प्रमुख परिवर्तनों और नवाचारों का अवलोकन दिया गया है:<ref>{{Cite web |title=Releases · sbt/sbt |url=https://github.com/sbt/sbt/releases |access-date=2023-06-15 |website=GitHub |language=en}}</ref>
एसबीटी को मूल रूप से 2008 में मार्क हर्राह द्वारा ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया गया था।<ref>{{Cite web |title=sbt Reference Manual — Developer’s Guide (Work in progress) |url=https://www.scala-sbt.org/1.x/docs/Developers-Guide.html |access-date=2023-06-15 |website=www.scala-sbt.org}}</ref> इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में नवीन सुविधाएँ, बग फिक्स और संवर्द्धन सम्मिलित हैं। इस प्रकार से यहां महत्वपूर्ण रिलीज़ों के साथ-साथ उनके द्वारा प्रस्तुत किए गए प्रमुख परिवर्तनों और नवाचारों का अवलोकन दिया गया है:<ref>{{Cite web |title=Releases · sbt/sbt |url=https://github.com/sbt/sbt/releases |access-date=2023-06-15 |website=GitHub |language=en}}</ref>
# एसबीटी 0.3.2 (2008): यह एसबीटी की पहली आधिकारिक रिलीज़ थी। इसने परियोजना परिभाषा, निर्भरता प्रबंधन और संकलन जैसी प्राथमिक विशेषताएं पेश कीं।
# '''एसबीटी''' 0.3.2 (2008): यह '''एसबीटी''' की प्रथम आधिकारिक रिलीज़ थी। अतः इसने परियोजना परिभाषा, निर्भरता प्रबंधन और संकलन जैसी प्राथमिक विशेषताएं प्रस्तुत कीं थी।
# एसबीटी 0.7 (2009): स्काला परियोजनाओं के निर्माण और प्रबंधन के लिए बुनियादी ढांचा स्थापित किया गया। मुख्य विशेषताओं में वृद्धिशील संकलन, निर्भरता प्रबंधन और सीधा कार्य निष्पादन शामिल हैं।
# '''एसबीटी''' 0.7 (2009): स्काला प्रोजेक्ट के बिल्ड और प्रबंधन के लिए मूलभूत संरचना को स्थापित किया गया था। मुख्य विशेषताओं में वृद्धिशील संकलन, निर्भरता प्रबंधन और प्रत्यक्ष कार्य निष्पादन सम्मिलित हैं।
# एसबीटी 0.10 (2011): बिल्ड डेफिनिशन सिंटैक्स में एक महत्वपूर्ण बदलाव पेश किया गया, जिससे यह अधिक अभिव्यंजक और लचीला बन गया। प्रदर्शन, निर्भरता प्रबंधन और कॉन्फ़िगरेशन में भी वृद्धि हुई।
# '''एसबीटी''' 0.10 (2011): बिल्ड डेफिनिशन सिंटैक्स में महत्वपूर्ण बदलाव प्रस्तुत किया गया था, जिससे यह अधिक अभिव्यंजक और नम्य बन गया। निष्पादन, निर्भरता प्रबंधन और कॉन्फ़िगरेशन में भी वृद्धि हुई थी।
# एसबीटी 0.12 (2012): मल्टी-मॉड्यूल परियोजनाओं के लिए बेहतर समर्थन, कस्टम कॉन्फ़िगरेशन को परिभाषित करने की क्षमता और सरलीकृत प्लगइन विकास।
# '''एसबीटी''' 0.12 (2012): बहु-मॉड्यूल प्रोजेक्ट के लिए स्पष्ट समर्थन, कस्टम कॉन्फ़िगरेशन को परिभाषित करने की क्षमता और सरलीकृत प्लगइन विकास।
# एसबीटी 0.13 (2013): प्रयोज्यता और प्रदर्शन पर ध्यान केंद्रित। इस संस्करण में एक्टिवेटर पेश किया गया,<ref>{{Cite web |last=Inc |first=Lightbend |title=Typesafe Activator 1.3.0 released: Contains new sbt server and UI {{!}} @lightbend |url=https://www.lightbend.com/blog/typesafe-activator-130-released-contains-new-sbt-server-and-ui |access-date=2023-06-15 |website=Lightbend |language=en}}</ref> प्रोजेक्ट बनाने और प्रबंधित करने के लिए एक वेब-आधारित टूल। अन्य विशेषताओं में वृद्धिशील मैक्रो संकलन, बिल्ड परिभाषा त्रुटियों की बेहतर हैंडलिंग और विभिन्न प्रदर्शन अनुकूलन शामिल हैं। 0.13 अगले चार वर्षों तक मुख्य एसबीटी संस्करण बना रहा।
# '''एसबीटी''' 0.13 (2013): प्रयोज्यता और निष्पादन पर ध्यान केंद्रित। इस संस्करण में प्रोजेक्ट बनाने और प्रबंधित करने के लिए<ref>{{Cite web |last=Inc |first=Lightbend |title=Typesafe Activator 1.3.0 released: Contains new sbt server and UI {{!}} @lightbend |url=https://www.lightbend.com/blog/typesafe-activator-130-released-contains-new-sbt-server-and-ui |access-date=2023-06-15 |website=Lightbend |language=en}}</ref> एक वेब-आधारित टूल एक्टिवेटर प्रस्तुत किया गया। अन्य विशेषताओं में वृद्धिशील मैक्रो संकलन, बिल्ड परिभाषा त्रुटियों की स्पष्ट हैंडलिंग और विभिन्न निष्पादन अनुकूलन सम्मिलित हैं। 0.13 अगले चार वर्षों तक मुख्य एसबीटी संस्करण बना रहा था।
# एसबीटी 1.0 (2017): प्रदर्शन और स्थिरता पर ध्यान केंद्रित करते हुए एसबीटी कोडबेस में पर्याप्त बदलाव किए गए, लेकिन यथासंभव पुराने संस्करणों के साथ संगतता बनाए रखने का भी प्रयास किया गया। नई सुविधाओं में कार्यों और सेटिंग्स को परिभाषित करने के लिए एकीकृत स्लैश सिंटैक्स, बेहतर निर्भरता प्रबंधन और बिल्ड परिभाषाओं के लिए उपयोग किए जाने वाले भाषा संस्करण के रूप में स्काला 2.12 शामिल हैं। इसके अलावा, नए जिंक 1.0 वृद्धिशील कंपाइलर पर स्विच करने से वृद्धिशील संकलन प्रदर्शन में और वृद्धि हुई।<ref>{{Cite web |title=जिंक 1.0 के साथ संकलन समय को तेज करें|url=https://www.scala-lang.org/blog/2017/11/03/zinc-blog-1.0.html |access-date=2023-06-15 |website=www.scala-lang.org}}</ref>
# '''एसबीटी''' 1.0 (2017): निष्पादन और स्थिरता पर ध्यान केंद्रित करते हुए एसबीटी कोडबेस में पर्याप्त बदलाव किए गए, परन्तु यथासंभव प्राचीन संस्करणों के साथ संगतता बनाए रखने का भी प्रयास किया गया। इस प्रकार से नवीन सुविधाओं में कार्यों और सेटिंग्स को परिभाषित करने के लिए एकीकृत स्लैश सिंटैक्स, स्पष्ट निर्भरता प्रबंधन और बिल्ड परिभाषाओं के लिए उपयोग किए जाने वाले लैंग्वेज संस्करण के रूप में स्काला 2.12 सम्मिलित हैं। इसके अतिरिक्त, नवीन जिंक 1.0 वृद्धिशील कंपाइलर पर स्विच करने से वृद्धिशील संकलन निष्पादन में और वृद्धि हुई।<ref>{{Cite web |title=जिंक 1.0 के साथ संकलन समय को तेज करें|url=https://www.scala-lang.org/blog/2017/11/03/zinc-blog-1.0.html |access-date=2023-06-15 |website=www.scala-lang.org}}</ref>
# एसबीटी 1.1 (2018): इस रिलीज ने एसबीटी सर्वर लॉन्च किया, जिससे आईडीई और अन्य टूल [[भाषा सर्वर प्रोटोकॉल]] (एलएसपी) के माध्यम से एसबीटी के साथ बातचीत कर सके। इसने Scala.js के लिए क्रॉस-बिल्डिंग समर्थन भी जोड़ा<ref>{{Cite web |title=स्काला.जे.एस|url=https://www.scala-js.org/ |access-date=2023-06-15 |website=Scala.js}}</ref> और स्काला मूल निवासी<ref>{{Cite web |title=Scala Native — Scala Native 0.4.14 documentation |url=https://scala-native.org/en/stable/ |access-date=2023-06-15 |website=scala-native.org}}</ref> और विभिन्न कार्यों के प्रदर्शन में सुधार हुआ।
# '''एसबीटी''' 1.1 (2018): इस रिलीज ने एसबीटी सर्वर जारी किया, जिससे आईडीई और अन्य टूल लैंग्वेज [[भाषा सर्वर प्रोटोकॉल|सर्वर प्रोटोकॉल]] (एलएसपी) के माध्यम से एसबीटी के साथ परस्पर क्रिया कर सके। इसने स्काला.जेएस<ref>{{Cite web |title=स्काला.जे.एस|url=https://www.scala-js.org/ |access-date=2023-06-15 |website=Scala.js}}</ref> और स्काला नेटिव<ref>{{Cite web |title=Scala Native — Scala Native 0.4.14 documentation |url=https://scala-native.org/en/stable/ |access-date=2023-06-15 |website=scala-native.org}}</ref> के लिए अनुप्रस्थ-बिल्डिंग समर्थन भी जोड़ा और विभिन्न कार्यों के निष्पादन में सुधार किया।
# एसबीटी 1.3 (2019): इस संस्करण ने कौरसियर को अपनाकर निर्भरता समाधान को तेज करके उपयोगकर्ता अनुभव में काफी सुधार किया है<ref>{{Cite web |title=Coursier · Pure Scala Artifact Fetching |url=https://get-coursier.io/ |access-date=2023-06-15 |website=get-coursier.io}}</ref> डिफ़ॉल्ट निर्भरता प्रबंधक के रूप में। आगे के संवर्द्धन में बिल्ड कैशिंग तंत्र में सुधार और जेडीके 11 के लिए समर्थन शामिल है।
# '''एसबीटी''' 1.3 (2019): इस संस्करण ने कौरसियर को डिफ़ॉल्ट निर्भरता प्रबंधक के रूप में अपनाकर निर्भरता हल को तीव्र करके<ref>{{Cite web |title=Coursier · Pure Scala Artifact Fetching |url=https://get-coursier.io/ |access-date=2023-06-15 |website=get-coursier.io}}</ref> उपयोगकर्ता अनुभव में उल्लेखनीय रूप से सुधार किया। आगे के संवर्द्धन में बिल्ड कैशिंग तंत्र में सुधार और जेडीके 11 के लिए समर्थन सम्मिलित है।
# एसबीटी 1.5 (2021): स्काला 3 के लिए समर्थन जोड़ा गया। बीएसपी (बिल्ड सर्वर प्रोटोकॉल) समर्थन में भी संवर्द्धन किया गया,<ref>{{Cite web |title=सर्वर प्रोटोकॉल बनाएँ|url=https://build-server-protocol.github.io/ |access-date=2023-06-15 |website=build-server-protocol.github.io |language=en}}</ref> आईडीई के साथ बेहतर एकीकरण सक्षम करना।
# '''एसबीटी''' 1.5 (2021): स्काला 3 के लिए समर्थन जोड़ा गया था। बीएसपी (बिल्ड सर्वर प्रोटोकॉल) समर्थन में भी संवर्द्धन किया गया,<ref>{{Cite web |title=सर्वर प्रोटोकॉल बनाएँ|url=https://build-server-protocol.github.io/ |access-date=2023-06-15 |website=build-server-protocol.github.io |language=en}}</ref> जिससे आईडीई के साथ स्पष्ट एकीकरण संभव हो सका।
# एसबीटी 1.8 (2022): यह रिलीज़ कौरसियर में अपडेट लेकर आई और आइवी समर्थन में सुधार हुआ।
# '''एसबीटी''' 1.8 (2022): यह रिलीज़ कौरसियर में अपडेट लेकर आई और आइवी समर्थन में सुधार हुआ।
# एसबीटी 1.9 (2023): नए प्रोजेक्ट बनाने में मदद के लिए कौरसियर में अधिक अपडेट और एक टेक्स्ट-आधारित मेनू।
# '''एसबीटी''' 1.9 (2023): नवीन प्रोजेक्ट बनाने में सहायता के लिए कौरसियर में अधिक अपडेट और टेक्स्ट-आधारित मेनू।


==फ़ाइलें बनाएँ==
==फ़ाइल बिल्ड==
एक एसबीटी बिल्ड को a का उपयोग करके परिभाषित किया जा सकता है <code>.sbt</code> फ़ाइल <ref>[http://www.scala-sbt.org/1.x/docs/Basic-Def.html sbt: .sbt build definition]</ref> नीचे इसका एक उदाहरण दिया गया है <code>build.sbt</code> निर्माण परिभाषा:
इस प्रकार से एक एसबीटी बिल्ड को <code>.sbt</code> का उपयोग करके परिभाषित किया जा सकता है,<ref>[http://www.scala-sbt.org/1.x/docs/Basic-Def.html sbt: .sbt build definition]</ref> नीचे <code>build.sbt</code>बिल्ड परिभाषा का एक उदाहरण दिया गया है:


<syntaxhighlight lang="scala">
<syntaxhighlight lang="scala">
Line 80: Line 80:
   )
   )
</syntaxhighlight>
</syntaxhighlight>


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


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ sbt clean
$ sbt clean
</syntaxhighlight>
</syntaxhighlight>
एक ही लाइन पर एकाधिक कमांड का उपयोग किया जा सकता है। Foo नामक एकल परीक्षण चलाने और फिर निर्यातित जार प्रकाशित करने के लिए:
एक ही श्रेणी पर एकाधिक कमांड का उपयोग किया जा सकता है। इस प्रकार से फू नामक एकल परीक्षण चलाने और फिर निर्यातित जार प्रकाशित करने के लिए:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ sbt "testOnly Foo" publish
$ sbt "testOnly Foo" publish
</syntaxhighlight>
</syntaxhighlight>


==विस्तारशीलता और एकीकरण==
==विस्तारशीलता और एकीकरण==
एसबीटी की कार्यक्षमता को प्लगइन आर्किटेक्चर के माध्यम से बढ़ाया जा सकता है।<ref>{{cite web|url=http://www.scala-sbt.org/release/docs/Community-प्लग-इन.html|title = प्लग-इन|publisher=sbt|accessdate=17 October 2014}}</ref> समुदाय-योगदान वाले प्लगइन्स हस्ताक्षर, पैकेजिंग, प्रकाशन और कलाकृतियों को जारी करने, ब्लॉग और डेटाबेस जैसी अन्य सेवाओं से जुड़ने या अन्य प्रौद्योगिकियों के साथ एकीकृत करने जैसे क्षेत्रों को कवर करते हैं।
अतः एसबीटी की कार्यक्षमता को प्लगइन संरचना के माध्यम से बढ़ाया जा सकता है।<ref>{{cite web|url=http://www.scala-sbt.org/release/docs/Community-प्लग-इन.html|title = प्लग-इन|publisher=sbt|accessdate=17 October 2014}}</ref> समुदाय-योगदान वाले प्लगइन्स हस्ताक्षर, पैकेजिंग, प्रकाशन और कलाकृतियों को जारी करने, ब्लॉग और डेटाबेस जैसी अन्य सेवाओं से जुड़ने या अन्य प्रौद्योगिकियों के साथ एकीकृत करने जैसे क्षेत्रों को आच्छादित करते हैं।


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


==तुलना==
==तुलना==


बिल्ड टूल्स के बीच एसबीटी के मुख्य विकल्प [[ग्रैडल]] और [[अपाचे मावेन]] हैं, दोनों जेवीएम प्लेटफॉर्म पर विकसित परियोजनाओं के लिए स्थापित बिल्ड टूल हैं। स्काला पारिस्थितिकी तंत्र में, एक अन्य लोकप्रिय निर्माण उपकरण मिल है।<ref>{{Cite web |title=Introduction to Mill :: Mill |url=http://mill-build.com/mill/Intro_to_Mill.html |access-date=2023-06-15 |website=mill-build.com}}</ref> एसबीटी, ग्रैडल, अपाचे मावेन और मिल के बीच का चुनाव, आपके प्रोजेक्ट की विशिष्ट आवश्यकताओं और टूल के साथ आपकी परिचितता पर निर्भर करता है। यदि आप मुख्य रूप से स्काला के साथ काम कर रहे हैं, तो एसबीटी या मिल बेहतर विकल्प साबित हो सकता है, जबकि यदि आप कई भाषाओं या प्रौद्योगिकियों के साथ काम कर रहे हैं, तो अन्य दो में से एक बेहतर विकल्प हो सकता है।
अतः बिल्ड टूल के मध्य एसबीटी के मुख्य विकल्प [[ग्रैडल]] और [[अपाचे मावेन]] हैं, दोनों जेवीएम प्लेटफॉर्म पर विकसित प्रोजेक्ट के लिए स्थापित बिल्ड टूल हैं। स्काला पारिस्थितिकी तंत्र में, अन्य लोकप्रिय बिल्ड उपकरण मिल है।<ref>{{Cite web |title=Introduction to Mill :: Mill |url=http://mill-build.com/mill/Intro_to_Mill.html |access-date=2023-06-15 |website=mill-build.com}}</ref> इस प्रकार से एसबीटी, ग्रैडल, अपाचे मावेन और मिल के मध्य का चुनाव, आपके प्रोजेक्ट की विशिष्ट आवश्यकताओं और टूल के साथ आपकी परिचितता पर निर्भर करता है। यदि आप मुख्य रूप से स्काला के साथ कार्य कर रहे हैं, तो एसबीटी या मिल स्पष्ट विकल्प सिद्ध हो सकता है, जबकि यदि आप कई लैंग्वेजों या प्रौद्योगिकियों के साथ कार्य कर रहे हैं, तो अन्य दो में से स्पष्ट विकल्प हो सकता है।
 
{| class="wikitable"
{| class="wikitable"
|
|
!'''sbt'''
!'''एसबीटी'''
!'''Gradle'''
!'''ग्रैडल'''
!'''Maven'''
!'''मावेन'''
!'''Mill'''
!'''मिल'''
|-
|-
!'''Language and target audience'''
!'''लैंग्वेज और लक्षित दर्शक'''
|Specifically designed for Scala and Java projects. Offers features that cater to the unique needs of the Scala ecosystem. Sees the most frequent usage in Scala projects.
|विशेष रूप से स्काला और जावा परियोजनाओं के लिए डिज़ाइन किया गया। ऐसी सुविधाएँ प्रदान करता है जो स्काला पारिस्थितिकी तंत्र की विशिष्ट आवश्यकताओं को पूर्ण करती हैं। स्काला परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है।
|General-purpose, supporting multiple languages, including Java, Groovy, Kotlin, Scala, and more. Sees the most frequent usage in Java and Kotlin projects.
|सामान्य प्रयोजन, जावा, ग्रूवी, कोटलिन, स्काला और अन्य सहित कई लैंग्वेजों का समर्थन करता है। जावा और कोटलिन परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है।
|Used for Java projects but can also support other programming languages via plugins like Scala, Groovy, and Kotlin. Sees the most frequent usage in Java projects.
|जावा परियोजनाओं के लिए उपयोग किया जाता है, परन्तु स्काला, ग्रूवी और कोटलिन जैसे प्लगइन्स के माध्यम से अन्य प्रोग्रामिंग लैंग्वेजों का भी समर्थन कर सकता है। जावा प्रोजेक्ट में इसका सबसे अधिक उपयोग देखा जाता है।
|Primarily targets Scala, but it does have support for compiling Java code in mixed Scala/Java projects. Sees the most frequent usage in Scala projects and is particularly appealing to developers who value simplicity and predictability in their build tool.
|मुख्य रूप से स्काला को लक्षित करता है, परन्तु इसमें मिश्रित स्काला/जावा परियोजनाओं में जावा कोड संकलित करने के लिए समर्थन है। स्काला परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है और यह विशेष रूप से उन डेवलपर्स के लिए आकर्षक है जो अपने बिल्ड उपकरण में सरलता और पूर्वानुमेयता को महत्व देते हैं।
|-
|-
!'''Build file syntax'''
!'''फ़ाइल सिंटैक्स बिल्ड'''
|Build files are written in Scala, leveraging Scala's expressiveness and type safety during build definition.
|बिल्ड फ़ाइलें स्काला में लिखी जाती हैं, बिल्ड परिभाषा के समय स्काला की अभिव्यक्ति और प्रकार की सुरक्षा का लाभ उठाती हैं।
|Build files can be written in either Groovy or Kotlin. Syntax tends to lean towards being more declarative.
|बिल्ड फ़ाइलें ग्रूवी या कोटलिन में लिखी जा सकती हैं। सिंटैक्स अधिक घोषणात्मक होने की ओर आश्रित होता है।
|Uses XML for writing Project Object Model (POM) files. Syntax is more verbose and declarative, favoring a standardized project structure and a convention over configuration.
|प्रोजेक्ट ऑब्जेक्ट मॉडल (पीओएम) फ़ाइलें लिखने के लिए एक्सएमएल का उपयोग करता है। सिंटैक्स अधिक क्रियात्मक और घोषणात्मक है, जो एक मानकीकृत परियोजना संरचना और कॉन्फ़िगरेशन पर एक कन्वेंशन का पक्ष लेता है।
|Uses plain Scala for its build files. Its build definitions are written as Scala object definitions and the tasks are defined as methods within those objects.
|अपनी बिल्ड फ़ाइलों के लिए सरलता स्काला का उपयोग करता है। इसकी बिल्ड परिभाषाएँ स्काला ऑब्जेक्ट परिभाषाओं के रूप में लिखी जाती हैं और कार्यों को उन ऑब्जेक्ट के भीतर विधियों के रूप में परिभाषित किया जाता है।
|-
|-
!'''Incremental compilation'''
!'''वृद्धिशील संकलन'''
|Features incremental compilation, compiling only the sections of the code that have changed and thus speeding up the development process.
|वृद्धिशील संकलन की सुविधा, कोड के मात्र उन अनुभागों को संकलित करना जो बदल गए हैं और इस प्रकार विकास प्रक्रिया को गति देते हैं।
|Also supports incremental compilation for Java and Kotlin projects, but its capability for Scala incremental compilation is not as well developed as '''sbt'''<nowiki/>'s.
|जावा और कोटलिन परियोजनाओं के लिए वृद्धिशील संकलन का भी समर्थन करता है, परन्तु स्काला वृद्धिशील संकलन के लिए इसकी क्षमता एसबीटी के जैसे विकसित नहीं है।
|By default, it does not support incremental compilation. It can be enabled via plugins like scala-maven-plugin for Scala projects or the incremental compilation feature of java-compiler-plugin for Java projects.
|डिफ़ॉल्ट रूप से, यह वृद्धिशील संकलन का समर्थन नहीं करता है। इसे स्काला प्रोजेक्ट के लिए स्काला-मेवेन-प्लगइन जैसे प्लगइन्स या जावा प्रोजेक्ट के लिए जावा-कंपाइलर-प्लगइन के वृद्धिशील संकलन सुविधा के माध्यम से सक्षम किया जा सकता है।
|Features incremental compilation. Additionally, uses aggressive caching of task outputs and isolated environments for each task, which further improves the speed and accuracy of builds.
|विशेषताएं वृद्धिशील संकलन इसके अतिरिक्त, प्रत्येक कार्य के लिए कार्य आउटपुट और पृथक वातावरण की आक्रामक कैशिंग का उपयोग किया जाता है, जो बिल्ड की गति और यथार्थता को और स्पष्ट बनाता है।
|-
|-
!'''Extensibility and plugins'''
!'''एक्स्टेंसिबिलिटी और प्लगइन्स'''
|Offers an extensive plugin ecosystem, allowing developers to enlarge the build tool's functionality.
|एक व्यापक प्लगइन पारिस्थितिकी तंत्र प्रदान करता है, जो डेवलपर्स को बिल्ड टूल की कार्यक्षमता को बढ़ाने की अनुमति देता है।
|Due to its wider acceptance across numerous languages and platforms, Gradle's plugin ecosystem is more extensive and varied than '''sbt'''<nowiki/>'s.
|कई लैंग्वेजों और प्लेटफार्मों पर इसकी व्यापक स्वीकृति के कारण, ग्रैडल का प्लगइन पारिस्थितिकी तंत्र एसबीटी की तुलना में अधिक व्यापक औ<nowiki/>र विविध है।
|Has a larger and more mature plugin ecosystem than '''sbt''' due to its extensive history and wide acceptance within the Java community.
|अपने व्यापक इतिहास और जावा समुदाय के भीतर व्यापक स्वीकृति के कारण एसबीटी की तुलना में इसका प्लगइन पारिस्थितिकी तंत्र बड़ा और अधिक परिपक्व है।
|Has a smaller plugin ecosystem than '''sbt''', but supports extensibility in a different way:
|इसमें एसबीटी की तुलना में छोटा प्लगइन इकोसिस्टम है, परन्तु एक अलग विधि से एक्स्टेंसिबिलिटी का समर्थन करता है:
 
मिल में, आप पुन: प्रयोज्य मॉड्यूल और लाइब्रेरी को प्रत्यक्षतः अपनी बिल्ड फ़ाइलों में, सरल स्काला में परिभाषित कर सकते हैं। आप अपनी बिल्ड फ़ाइलों में तृतीय-पक्ष स्काला लाइब्रेरी को आयात और उपयोग भी कर सकते हैं।
In Mill, you can define reusable modules and libraries directly in your build files, in plain Scala. You can also import and use third-party Scala libraries in your build files.
|-
|-
!'''Performance'''
!'''निष्पादन'''
|Employs performance optimizations like incremental compilation and parallel task execution, but the results vary depending on project complexity and specific use cases.
|वृद्धिशील संकलन और समानांतर कार्य निष्पादन जैसे निष्पादन अनुकूलन को नियोजित करता है, परन्तु परिणाम परियोजना की जटिलता और विशिष्ट उपयोग के स्थितियों के आधार पर भिन्न होते हैं।
|Emphasizes performance, utilizing a daemon process running in the background to accelerate builds.
|बिल्ड में तीव्रता लाने के लिए पृष्ठभूमि में चल रही डेमॉन प्रक्रिया का उपयोग करते हुए, निष्पादन पर बल देता है।
|By default, it doesn't support incremental compilation, nor parallel execution. Both can be achieved using plugins and build tool options.
|डिफ़ॉल्ट रूप से, यह वृद्धिशील संकलन, न ही समानांतर निष्पादन का समर्थन नहीं करता है। दोनों को प्लगइन्स और बिल्ड टूल विकल्पों का उपयोग करके प्राप्त किया जा सकता है।
|Supports incremental compilation and parallel execution. Is generally considered to take a more aggressive approach to caching, which often leads to faster incremental build times compared to '''sbt''', especially for larger projects.
|वृद्धिशील संकलन और समानांतर निष्पादन का समर्थन करता है। सामान्यतः इसे कैशिंग के लिए अधिक आक्रामक दृष्टिकोण अपनाने के लिए माना जाता है, जो प्रायः एसबीटी की तुलना में तीव्रता से वृद्धिशील बिल्ड समय की ओर ले जाता है, विशेषकर बड़ी परियोजनाओं के लिए।
|-
|-
!'''Build lifecycle'''
!'''जीवन चक्र बिल्ड'''
|Uses complex DSL ( Domain Specific Language) for build definitions, offering more granular control over the build process.
|बिल्ड परिभाषाओं के लिए जटिल डीएसएल (डोमेन विशिष्ट लैंग्वेज) का उपयोग करता है, जो बिल्ड प्रक्रिया पर अधिक विस्तृत नियंत्रण प्रदान करता है।
|Its DSL is simpler than '''sbt'''<nowiki/>'s, more declarative and may feel more intuitive for beginners.
|इसका डीएसएल एसबीटी की तुलना<nowiki/> में सरल है, अधिक घोषणात्मक है और प्रारंभिक लोगों के लिए अधिक सहज समझ सकते है।
|Introduces a fixed build lifecycle consisting of well-defined phases such as compile, test, package, install, etc. Through this, Maven provides a consistent structure across projects but lacks flexibility.
|एक निश्चित बिल्ड जीवनचक्र का परिचय देता है जिसमें संकलन, परीक्षण, पैकेज, इंस्टॉल आदि जैसे ठीक रूप से परिभाषित चरण सम्मिलित हैं। इसके माध्यम से, मावेन परियोजनाओं में एक सुसंगत संरचना प्रदान करता है परन्तु नम्यता का अभाव है।
|Builds are defined in terms of tasks. Each task represents a unit of work in a build, like compiling a module, running tests, creating a package, etc. Tasks can depend on other tasks. Mill takes care of running the tasks in the right order.
|बिल्ड को कार्यों के संदर्भ में परिभाषित किया गया है। प्रत्येक कार्य किसी बिल्ड में कार्य की एक इकाई का प्रतिनिधित्व करता है, जैसे मॉड्यूल संकलित करना, परीक्षण चलाना, पैकेज बनाना आदि। कार्य अन्य कार्यों पर निर्भर हो सकते हैं। मिल कार्यों को उचित क्रम में चलाने का ध्यान रखती है।
|-
|-
!'''Community'''
!'''समुदाय'''
|Has an active, supportive community, primarily concentrated on the Scala programming language.
|इसका एक सक्रिय, सहायक समुदाय है, जो मुख्य रूप से स्काला प्रोग्रामिंग लैंग्वेज पर केंद्रित है।
|Its community is more extensive and diverse than '''sbt'''<nowiki/>'s, focusing on various programming languages and technologies.
|इसका समुदाय एसबीटी की तुलना में अधिक व्यापक और विविध<nowiki/> है, जो विभिन्न प्रोग्रामिंग लैंग्वेजों और प्रौद्योगिकियों पर ध्यान केंद्रित करता है।
|Its community is larger and more diverse, addressing multiple programming languages and technologies.
|इसका समुदाय बड़ा और अधिक विविध है, जो कई प्रोग्रामिंग लैंग्वेजों और प्रौद्योगिकियों को संबोधित करता है।
|Mill is an actively developed open-source project. The community around it is not as large or established as the community around '''sbt''', but it is active and engaged and.
|मिल एक सक्रिय रूप से विकसित ओपन-सोर्स प्रोजेक्ट है। इसके निकट का समुदाय एसबीटी के निकट के समुदाय जितना बड़ा या स्थापित नहीं है, परन्तु यह सक्रिय और व्यस्त है।
|}
|}


 
== यह भी देखें{{Portal|Computer programming|Free and open-source software}}==
== यह भी देखें ==
{{Portal|Computer programming|Free and open-source software}}
*[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची]]
*[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची]]


Line 162: Line 158:
{{Reflist}}
{{Reflist}}


 
[[Category:Articles with hatnote templates targeting a nonexistent page]]
==बाहरी संबंध==
[[Category:CS1 English-language sources (en)]]
*{{Official website}}
[[Category: स्वचालन बनाएँ]] [[Category: संकलन उपकरण]] [[Category: जावा विकास उपकरण]] [[Category: स्काला (प्रोग्रामिंग भाषा)]] [[Category: स्काला में प्रोग्राम किया गया निःशुल्क सॉफ़्टवेयर]] [[Category: बीएसडी लाइसेंस का उपयोग करने वाला सॉफ़्टवेयर]]
 
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 11/07/2023]]
[[Category:Created On 11/07/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Official website missing URL]]
[[Category:Pages with empty portal template]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Short description with empty Wikidata description]]
[[Category:Template documentation pages|Short description/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]

Latest revision as of 10:36, 27 July 2023

sbt
Original author(s)Mark Harrah
Developer(s)Eugene Yokota and community
Stable release
1.9.0[1] / June 2, 2023; 17 months ago (2023-06-02) [2]
Written inScala
Operating systemCross-platform
PlatformJava
TypeBuild automation
LicenseBSD License
Websitescala-sbt.org

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

अतः एसबीटी स्काला प्रोजेक्ट के बिल्ड और प्रबंधन की प्रक्रिया को सरल और कुशल बनाने के लिए सुविधाओं की विस्तृत श्रृंखला प्रदान करता है।[4] इस प्रकार से कुछ प्रमुख विशेषताओं में सम्मिलित हैं:

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

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

इतिहास

एसबीटी को मूल रूप से 2008 में मार्क हर्राह द्वारा ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया गया था।[8] इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में नवीन सुविधाएँ, बग फिक्स और संवर्द्धन सम्मिलित हैं। इस प्रकार से यहां महत्वपूर्ण रिलीज़ों के साथ-साथ उनके द्वारा प्रस्तुत किए गए प्रमुख परिवर्तनों और नवाचारों का अवलोकन दिया गया है:[9]

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

फ़ाइल बिल्ड

इस प्रकार से एक एसबीटी बिल्ड को .sbt का उपयोग करके परिभाषित किया जा सकता है,[16] नीचे build.sbtबिल्ड परिभाषा का एक उदाहरण दिया गया है:

val scalaTest   = "org.scalatest" %% "scalatest" % "3.2.14"
val akkaVersion = "2.6.20"
val akkaActor   = "com.typesafe.akka" %% "akka-actor" % akkaVersion
val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % akkaVersion

// Set the Scala version used by this build to 2.13.10.
ThisBuild / scalaVersion := "2.13.10"
ThisBuild / version      := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"

lazy val root = (project in file("."))
  .aggregate(helloCore)
  .dependsOn(helloCore)
  .settings(
    name := "Hello",
    // Add a single dependency, for tests.
    libraryDependencies += scalaTest % Test
  )

lazy val helloCore = (project in file("core"))
  .settings(
    name := "Hello Core",
    libraryDependencies += scalaTest % Test,
    // Add multiple dependencies.
    libraryDependencies ++= List(akkaActor, akkaCluster)
  )

उदाहरण उपयोग

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

$ sbt clean

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

$ sbt "testOnly Foo" publish

विस्तारशीलता और एकीकरण

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

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

तुलना

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

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

मिल में, आप पुन: प्रयोज्य मॉड्यूल और लाइब्रेरी को प्रत्यक्षतः अपनी बिल्ड फ़ाइलों में, सरल स्काला में परिभाषित कर सकते हैं। आप अपनी बिल्ड फ़ाइलों में तृतीय-पक्ष स्काला लाइब्रेरी को आयात और उपयोग भी कर सकते हैं।

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

यह भी देखें

संदर्भ

  1. sbt - Download
  2. eed3si9n (2023-06-02). "Announce: sbt 1.9.0". eed3si9n.com. Retrieved 2023-06-12.
  3. "sbt Reference Manual — Frequently Asked Questions". www.scala-sbt.org. Retrieved 2023-06-15.
  4. "sbt Reference Manual — sbt Reference Manual". www.scala-sbt.org. Retrieved 2023-06-15.
  5. "मिलकर बेहतर सॉफ्टवेयर बनाएं". GitHub (in English). Retrieved 2023-06-15.
  6. Welcome!, The Scala Programming Language, 2023-06-14, retrieved 2023-06-15
  7. Dotty, Programming Methods Laboratory EPFL, 2023-06-14, retrieved 2023-06-15
  8. "sbt Reference Manual — Developer's Guide (Work in progress)". www.scala-sbt.org. Retrieved 2023-06-15.
  9. "Releases · sbt/sbt". GitHub (in English). Retrieved 2023-06-15.
  10. Inc, Lightbend. "Typesafe Activator 1.3.0 released: Contains new sbt server and UI | @lightbend". Lightbend (in English). Retrieved 2023-06-15. {{cite web}}: |last= has generic name (help)
  11. "जिंक 1.0 के साथ संकलन समय को तेज करें". www.scala-lang.org. Retrieved 2023-06-15.
  12. "स्काला.जे.एस". Scala.js. Retrieved 2023-06-15.
  13. "Scala Native — Scala Native 0.4.14 documentation". scala-native.org. Retrieved 2023-06-15.
  14. "Coursier · Pure Scala Artifact Fetching". get-coursier.io. Retrieved 2023-06-15.
  15. "सर्वर प्रोटोकॉल बनाएँ". build-server-protocol.github.io (in English). Retrieved 2023-06-15.
  16. sbt: .sbt build definition
  17. "प्लग-इन". sbt. Retrieved 17 October 2014.
  18. "Introduction to Mill :: Mill". mill-build.com. Retrieved 2023-06-15.