एसबीटी (सॉफ्टवेयर): Difference between revisions
No edit summary |
No edit summary |
||
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|| | {{about||एसबीटी लेखा सॉफ्टवेयर|एसीसीपीएसी|टेलीविजन नेटवर्क|Sistema Brasileiro de Televisão}} | ||
{{Infobox software | {{Infobox software | ||
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 — 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> [[प्ले फ्रेमवर्क]] और लोकप्रिय शतरंज सर्वर, लाइकेस द्वारा किया जाता है। '''एसबीटी''' प्रोजेक्ट बूटस्ट्रैप्ड है - यह स्वयं को बनाने के लिए एसबीटी का उपयोग करता है और डॉगफूडिंग को एक धनात्मक विशेषता मानता है। | ||
==इतिहास== | ==इतिहास== | ||
एसबीटी को मूल रूप से 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> इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में | एसबीटी को मूल रूप से 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): प्रयोज्यता और | # '''एसबीटी''' 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): | # '''एसबीटी''' 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): इस रिलीज ने एसबीटी सर्वर | # '''एसबीटी''' 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): इस संस्करण ने कौरसियर को अपनाकर निर्भरता | # '''एसबीटी''' 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 के लिए समर्थन जोड़ा | # '''एसबीटी''' 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): नवीन प्रोजेक्ट बनाने में सहायता के लिए कौरसियर में अधिक अपडेट और टेक्स्ट-आधारित मेनू। | ||
== | ==फ़ाइल निर्माण== | ||
एक एसबीटी | एक एसबीटी निर्माण को <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 82: | Line 82: | ||
==उदाहरण उपयोग== | ==उदाहरण उपयोग== | ||
प्रत्येक | प्रत्येक निर्माण कमांड के लिए एसबीटी लागू किया जा सकता है, या यदि कोई कमांड नहीं दिया गया है तो यह अन्योन्य क्रिया मोड में प्रवेश कर सकता है। वर्तमान निर्माण के निर्माण उत्पादों को स्पष्ट करने के लिए: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ sbt clean | $ sbt clean | ||
</syntaxhighlight> | </syntaxhighlight> | ||
एक ही लाइन पर एकाधिक कमांड का उपयोग किया जा सकता है। | एक ही लाइन पर एकाधिक कमांड का उपयोग किया जा सकता है। फू नामक एकल परीक्षण चलाने और फिर निर्यातित जार प्रकाशित करने के लिए: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ sbt "testOnly Foo" publish | $ sbt "testOnly Foo" publish | ||
Line 95: | Line 95: | ||
एसबीटी की कार्यक्षमता को प्लगइन आर्किटेक्चर के माध्यम से बढ़ाया जा सकता है।<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 का समर्थन करते हैं। उन दोनों आईडीई में, प्रारंभिक एसबीटी | 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> एसबीटी, ग्रैडल, अपाचे मावेन और मिल के बीच का चुनाव, आपके प्रोजेक्ट की विशिष्ट आवश्यकताओं और टूल के साथ आपकी परिचितता पर निर्भर करता है। यदि आप मुख्य रूप से स्काला के साथ कार्य कर रहे हैं, तो एसबीटी या मिल स्पष्ट विकल्प साबित हो सकता है, जबकि यदि आप कई भाषाओं या प्रौद्योगिकियों के साथ कार्य कर रहे हैं, तो अन्य दो में से स्पष्ट विकल्प हो सकता है। | |||
{| class="wikitable" | {| class="wikitable" | ||
| | | | ||
Line 108: | Line 109: | ||
|- | |- | ||
!'''Language and target audience''' | !'''Language and target audience''' | ||
| | |विशेष रूप से स्काला और जावा परियोजनाओं के लिए डिज़ाइन किया गया। ऐसी सुविधाएँ प्रदान करता है जो स्काला पारिस्थितिकी तंत्र की विशिष्ट आवश्यकताओं को पूरा करती हैं। स्कैला परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है। | ||
| | |सामान्य प्रयोजन, जावा, ग्रूवी, कोटलिन, स्काला और अन्य सहित कई भाषाओं का समर्थन करता है। जावा और कोटलिन परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है। | ||
| | |जावा परियोजनाओं के लिए उपयोग किया जाता है, लेकिन स्काला, ग्रूवी और कोटलिन जैसे प्लगइन्स के माध्यम से अन्य प्रोग्रामिंग भाषाओं का भी समर्थन कर सकता है। जावा प्रोजेक्ट्स में इसका सबसे अधिक उपयोग देखा जाता है। | ||
| | |मुख्य रूप से स्काला को लक्षित करता है, लेकिन इसमें मिश्रित स्काला/जावा परियोजनाओं में जावा कोड संकलित करने के लिए समर्थन है। स्काला परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है और यह विशेष रूप से उन डेवलपर्स के लिए आकर्षक है जो अपने निर्माण उपकरण में सादगी और पूर्वानुमेयता को महत्व देते हैं। | ||
|- | |- | ||
!'''Build file syntax''' | !'''Build file syntax''' | ||
| | |बिल्ड फ़ाइलें स्कैला में लिखी जाती हैं, बिल्ड परिभाषा के दौरान स्कैला की अभिव्यक्ति और प्रकार की सुरक्षा का लाभ उठाती हैं। | ||
| | |बिल्ड फ़ाइलें ग्रूवी या कोटलिन में लिखी जा सकती हैं। सिंटैक्स अधिक घोषणात्मक होने की ओर झुकता है। | ||
| | |प्रोजेक्ट ऑब्जेक्ट मॉडल (POM) फ़ाइलें लिखने के लिए XML का उपयोग करता है। सिंटैक्स अधिक क्रियात्मक और घोषणात्मक है, जो एक मानकीकृत परियोजना संरचना और कॉन्फ़िगरेशन पर एक सम्मेलन का पक्ष लेता है। | ||
| | |अपनी बिल्ड फ़ाइलों के लिए सादे स्काला का उपयोग करता है। इसकी बिल्ड परिभाषाएँ स्काला ऑब्जेक्ट परिभाषाओं के रूप में लिखी जाती हैं और कार्यों को उन ऑब्जेक्ट्स के भीतर विधियों के रूप में परिभाषित किया जाता है। | ||
|- | |- | ||
!'''Incremental compilation''' | !'''Incremental compilation''' | ||
| | |वृद्धिशील संकलन की सुविधा, कोड के केवल उन अनुभागों को संकलित करना जो बदल गए हैं और इस प्रकार विकास प्रक्रिया को गति देते हैं। | ||
| | |जावा और कोटलिन परियोजनाओं के लिए वृद्धिशील संकलन का भी समर्थन करता है, लेकिन स्काला वृद्धिशील संकलन के लिए इसकी क्षमता एसबीटी की तरह विकसित नहीं है। | ||
| | |डिफ़ॉल्ट रूप से, यह वृद्धिशील संकलन का समर्थन नहीं करता है। इसे स्कैला प्रोजेक्ट्स के लिए स्केला-मेवेन-प्लगइन जैसे प्लगइन्स या जावा प्रोजेक्ट्स के लिए जावा-कंपाइलर-प्लगइन के वृद्धिशील संकलन सुविधा के माध्यम से सक्षम किया जा सकता है। | ||
| | |विशेषताएं वृद्धिशील संकलन. इसके अतिरिक्त, प्रत्येक कार्य के लिए कार्य आउटपुट और पृथक वातावरण की आक्रामक कैशिंग का उपयोग किया जाता है, जो निर्माण की गति और सटीकता को और बेहतर बनाता है। | ||
|- | |- | ||
!'''Extensibility and plugins''' | !'''Extensibility and plugins''' | ||
| | |एक व्यापक प्लगइन पारिस्थितिकी तंत्र प्रदान करता है, जो डेवलपर्स को बिल्ड टूल की कार्यक्षमता को बढ़ाने की अनुमति देता है। | ||
| | |कई भाषाओं और प्लेटफार्मों पर इसकी व्यापक स्वीकृति के कारण, ग्रैडल का प्लगइन पारिस्थितिकी तंत्र एसबीटी की तुलना में अधिक व्यापक और वि<nowiki/>विध है। | ||
| | |अपने व्यापक इतिहास और जावा समुदाय के भीतर व्यापक स्वीकृति के कारण एसबीटी की तुलना में इसका प्लगइन पारिस्थितिकी तंत्र बड़ा और अधिक परिपक्व है। | ||
| | |इसमें एसबीटी की तुलना में छोटा प्लगइन इकोसिस्टम है, लेकिन एक अलग तरीके से एक्स्टेंसिबिलिटी का समर्थन करता है: | ||
मिल में, आप पुन: प्रयोज्य मॉड्यूल और लाइब्रेरीज़ को सीधे अपनी बिल्ड फ़ाइलों में, सादे स्काला में परिभाषित कर सकते हैं। आप अपनी बिल्ड फ़ाइलों में तृतीय-पक्ष स्काला लाइब्रेरीज़ को आयात और उपयोग भी कर सकते हैं। | |||
|- | |- | ||
!'''Performance''' | !'''Performance''' | ||
| | |वृद्धिशील संकलन और समानांतर कार्य निष्पादन जैसे प्रदर्शन अनुकूलन को नियोजित करता है, लेकिन परिणाम परियोजना की जटिलता और विशिष्ट उपयोग के मामलों के आधार पर भिन्न होते हैं। | ||
| | |निर्माण में तेजी लाने के लिए पृष्ठभूमि में चल रही डेमॉन प्रक्रिया का उपयोग करते हुए, प्रदर्शन पर जोर देता है। | ||
| | |डिफ़ॉल्ट रूप से, यह वृद्धिशील संकलन, न ही समानांतर निष्पादन का समर्थन नहीं करता है। दोनों को प्लगइन्स और बिल्ड टूल विकल्पों का उपयोग करके हासिल किया जा सकता है। | ||
| | |वृद्धिशील संकलन और समानांतर निष्पादन का समर्थन करता है। आम तौर पर इसे कैशिंग के लिए अधिक आक्रामक दृष्टिकोण अपनाने के लिए माना जाता है, जो अक्सर एसबीटी की तुलना में तेजी से वृद्धिशील निर्माण समय की ओर ले जाता है, खासकर बड़ी परियोजनाओं के लिए। | ||
|- | |- | ||
!'''Build lifecycle''' | !'''Build lifecycle''' | ||
| | |बिल्ड परिभाषाओं के लिए जटिल डीएसएल (डोमेन विशिष्ट भाषा) का उपयोग करता है, जो बिल्ड प्रक्रिया पर अधिक विस्तृत नियंत्रण प्रदान करता है। | ||
| | |इसका डीएसएल एसबीटी की तुलना<nowiki/> में सरल है, अधिक घोषणात्मक है और शुरुआती लोगों के लिए अधिक सहज महसूस हो सकता है। | ||
| | |एक निश्चित निर्माण जीवनचक्र का परिचय देता है जिसमें संकलन, परीक्षण, पैकेज, इंस्टॉल आदि जैसे अच्छी तरह से परिभाषित चरण शामिल हैं। इसके माध्यम से, मावेन परियोजनाओं में एक सुसंगत संरचना प्रदान करता है लेकिन लचीलेपन का अभाव है। | ||
| | |बिल्ड को कार्यों के संदर्भ में परिभाषित किया गया है। प्रत्येक कार्य किसी बिल्ड में कार्य की एक इकाई का प्रतिनिधित्व करता है, जैसे मॉड्यूल संकलित करना, परीक्षण चलाना, पैकेज बनाना आदि। कार्य अन्य कार्यों पर निर्भर हो सकते हैं। मिल कार्यों को सही क्रम में चलाने का ध्यान रखती है। | ||
|- | |- | ||
!'''Community''' | !'''Community''' | ||
| | |इसका एक सक्रिय, सहायक समुदाय है, जो मुख्य रूप से स्काला प्रोग्रामिंग भाषा पर केंद्रित है। | ||
| | |इसका समुदाय एसबीटी की तुलना में अधिक व्यापक और विविध<nowiki/> है, जो विभिन्न प्रोग्रामिंग भाषाओं और प्रौद्योगिकियों पर ध्यान केंद्रित करता है। | ||
| | |इसका समुदाय बड़ा और अधिक विविध है, जो कई प्रोग्रामिंग भाषाओं और प्रौद्योगिकियों को संबोधित करता है। | ||
| | |मिल एक सक्रिय रूप से विकसित ओपन-सोर्स प्रोजेक्ट है। इसके आसपास का समुदाय एसबीटी के आसपास के समुदाय जितना बड़ा या स्थापित नहीं है, लेकिन यह सक्रिय और व्यस्त है। | ||
|} | |} | ||
== यह भी देखें{{Portal|Computer programming|Free and open-source software}}== | == यह भी देखें{{Portal|Computer programming|Free and open-source software}}== | ||
*[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची]] | *[[बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची|निर्माण ऑटोमेशन सॉफ़्टवेयर की सूची]] | ||
==संदर्भ== | ==संदर्भ== | ||
Line 159: | Line 159: | ||
== | ==बाह्य संबंध== | ||
*{{Official website}} | *{{Official website}} | ||
[[Category: स्वचालन बनाएँ]] [[Category: संकलन उपकरण]] [[Category: जावा विकास उपकरण]] [[Category: स्काला (प्रोग्रामिंग भाषा)]] [[Category: स्काला में प्रोग्राम किया गया निःशुल्क सॉफ़्टवेयर]] [[Category: बीएसडी लाइसेंस का उपयोग करने वाला सॉफ़्टवेयर]] | [[Category: स्वचालन बनाएँ]] [[Category: संकलन उपकरण]] [[Category: जावा विकास उपकरण]] [[Category: स्काला (प्रोग्रामिंग भाषा)]] [[Category: स्काला में प्रोग्राम किया गया निःशुल्क सॉफ़्टवेयर]] [[Category: बीएसडी लाइसेंस का उपयोग करने वाला सॉफ़्टवेयर]] |
Revision as of 18:52, 18 July 2023
Original author(s) | Mark Harrah |
---|---|
Developer(s) | Eugene Yokota and community |
Stable release | |
Written in | Scala |
Operating system | Cross-platform |
Platform | Java |
Type | Build automation |
License | BSD License |
Website | scala-sbt |
एसबीटी (मूल रूप से सरल निर्माण टूल, आजकल प्रायः स्काला निर्माण टूल के लिए माना जाता है या इसे अपने उचित नाम के रूप में उपयोग किया जाता है)[3] ओपन-सोर्स सॉफ्टवेयर है जो स्पष्ट रूप से स्काला (प्रोग्रामिंग भाषा) और जावा (प्रोग्रामिंग भाषा) प्रोजेक्ट के लिए बनाया गया है। इसका उद्देश्य निर्माण, संकलक , परीक्षण स्वचालन और पैकेजिंग अनुप्रयोगों, लाइब्रेरी और संरचना की प्रक्रिया को सुव्यवस्थित करना है। एसबीटी अत्यधिक अनुकूलनीय है, जो डेवलपर्स को अपने प्रोजेक्ट की विशिष्ट आवश्यकताओं के अनुसार निर्माण प्रक्रिया को अनुकूलित करने की अनुमति देता है।
एसबीटी स्काला प्रोजेक्ट के निर्माण और प्रबंधन की प्रक्रिया को सरल और कुशल बनाने के लिए सुविधाओं की विस्तृत श्रृंखला प्रदान करता है।[4] कुछ प्रमुख विशेषताओं में सम्मिलित हैं:
- निर्भरता प्रबंधन: प्रोजेक्ट निर्भरता को स्वचालित रूप से डाउनलोड करने और संभालने की अपनी क्षमता के माध्यम से, एसबीटी बाह्य लाइब्रेरी और संरचना के उपयोग की सुविधा प्रदान करता है।
- वृद्धिशील संकलन: एसबीटी कोड के मात्र उन भागों को पुन: संकलित कर सकता है जो बदल गए हैं, जिसके परिणामस्वरूप विकास चक्र के समय महत्वपूर्ण समय की बचत होती है।
- अनुकूलन योग्य निर्माण प्रक्रिया: एसबीटी अत्यधिक अनुकूलन योग्य है, जो डेवलपर्स को कस्टम निर्माण सेटिंग्स को परिभाषित करने और अपनी प्रोजेक्ट की अद्वितीय आवश्यकताओं के साथ संरेखित करने के लिए निर्माण प्रक्रिया को कॉन्फ़िगर करने की अनुमति देता है।
- प्लग-इन (कंप्यूटिंग) पारिस्थितिकी तंत्र: एसबीटी प्लगइन पारिस्थितिकी तंत्र का अनुरोध करता है जो इसकी कार्यक्षमता को बढ़ाता है, जिसमें कोड गुणवत्ता जांच, परिनियोजन स्वचालन और परीक्षण कवरेज रिपोर्ट जैसी अतिरिक्त सुविधाएं सम्मिलित होती हैं। नवीन प्लगइन्स के विकास और एकीकरण को पूर्ण रूप से समर्थित और प्रोत्साहित किया जाता है।
- निरंतर एकीकरण: एसबीटी के साथ, जब भी कोई स्रोत फ़ाइल बदली जाती है, तो डेवलपर्स प्रणाली को स्वचालित रूप से पुन: संकलित करने और परीक्षणों को पुन: चलाने के लिए समूहित कर सकते हैं।
- बहु-प्रोजेक्ट निर्माण: कई स्काला प्रोजेक्ट पर कार्य करने वाले डेवलपर्स के लिए, एसबीटी उन्हें ही निर्माण के भीतर प्रबंधित करने के लिए सहायक सुविधाएँ प्रदान करता है।
- रीड-इवल-प्रिंट लूप: एसबीटी अन्योन्य क्रिया शेल से सुसज्जित है, जो डेवलपर्स को विकास प्रक्रिया के समय कार्यों और आदेशों को निष्पादित करने के लिए सुविधाजनक तरीका प्रदान करता है।
- समानांतर कार्य निष्पादन: एसबीटी समानांतर में कार्यों को निष्पादित कर सकता है, जिससे बड़ी प्रोजेक्ट के निर्माण समय में तीव्रता आती है।
- आईडीई के साथ एकीकरण: विकास अनुभव को अनुकूलित करने के लिए, एसबीटी लोकप्रिय एकीकृत विकास वातावरण (आईडीई) जैसे इंटेलिज आइडिया और विजुअल स्टूडियो कोड के साथ सरलता से एकीकृत होता है।
एसबीटी स्काला समुदाय में वास्तविक मानक उपकरण है,[5] जिसका उपयोग, उदाहरण के लिए, स्वयं स्काला 2 और स्काला 3 कंपाइलर,[6][7] प्ले फ्रेमवर्क और लोकप्रिय शतरंज सर्वर, लाइकेस द्वारा किया जाता है। एसबीटी प्रोजेक्ट बूटस्ट्रैप्ड है - यह स्वयं को बनाने के लिए एसबीटी का उपयोग करता है और डॉगफूडिंग को एक धनात्मक विशेषता मानता है।
इतिहास
एसबीटी को मूल रूप से 2008 में मार्क हर्राह द्वारा ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया गया था।[8] इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में नवीन सुविधाएँ, बग फिक्स और संवर्द्धन सम्मिलित हैं। यहां महत्वपूर्ण रिलीज़ों के साथ-साथ उनके द्वारा प्रस्तुत किए गए प्रमुख परिवर्तनों और नवाचारों का अवलोकन दिया गया है:[9]
- एसबीटी 0.3.2 (2008): यह एसबीटी की प्रथम आधिकारिक रिलीज़ थी। इसने परियोजना परिभाषा, निर्भरता प्रबंधन और संकलन जैसी प्राथमिक विशेषताएं प्रस्तुत कीं थी।
- एसबीटी 0.7 (2009): स्काला प्रोजेक्ट के निर्माण और प्रबंधन के लिए मूलभूत संरचना को स्थापित किया गया था। मुख्य विशेषताओं में वृद्धिशील संकलन, निर्भरता प्रबंधन और प्रत्यक्ष कार्य निष्पादन सम्मिलित हैं।
- एसबीटी 0.10 (2011): निर्माण डेफिनिशन सिंटैक्स में महत्वपूर्ण बदलाव प्रस्तुत किया गया था, जिससे यह अधिक अभिव्यंजक और नम्य बन गया। निष्पादन, निर्भरता प्रबंधन और कॉन्फ़िगरेशन में भी वृद्धि हुई थी।
- एसबीटी 0.12 (2012): बहु-मॉड्यूल प्रोजेक्ट के लिए स्पष्ट समर्थन, कस्टम कॉन्फ़िगरेशन को परिभाषित करने की क्षमता और सरलीकृत प्लगइन विकास।
- एसबीटी 0.13 (2013): प्रयोज्यता और निष्पादन पर ध्यान केंद्रित। इस संस्करण में प्रोजेक्ट बनाने और प्रबंधित करने के लिए[10] एक वेब-आधारित टूल एक्टिवेटर प्रस्तुत किया गया। अन्य विशेषताओं में वृद्धिशील मैक्रो संकलन, निर्माण परिभाषा त्रुटियों की स्पष्ट हैंडलिंग और विभिन्न निष्पादन अनुकूलन सम्मिलित हैं। 0.13 अगले चार वर्षों तक मुख्य एसबीटी संस्करण बना रहा था।
- एसबीटी 1.0 (2017): निष्पादन और स्थिरता पर ध्यान केंद्रित करते हुए एसबीटी कोडबेस में पर्याप्त बदलाव किए गए, परन्तु यथासंभव प्राचीन संस्करणों के साथ संगतता बनाए रखने का भी प्रयास किया गया। नवीन सुविधाओं में कार्यों और सेटिंग्स को परिभाषित करने के लिए एकीकृत स्लैश सिंटैक्स, स्पष्ट निर्भरता प्रबंधन और निर्माण परिभाषाओं के लिए उपयोग किए जाने वाले भाषा संस्करण के रूप में स्काला 2.12 सम्मिलित हैं। इसके अतिरिक्त, नवीन जिंक 1.0 वृद्धिशील कंपाइलर पर स्विच करने से वृद्धिशील संकलन निष्पादन में और वृद्धि हुई।[11]
- एसबीटी 1.1 (2018): इस रिलीज ने एसबीटी सर्वर जारी किया, जिससे आईडीई और अन्य टूल भाषा सर्वर प्रोटोकॉल (एलएसपी) के माध्यम से एसबीटी के साथ परस्पर क्रिया कर सके। इसने स्काला.जेएस[12] और स्काला नेटिव[13] के लिए अनुप्रस्थ-निर्माणिंग समर्थन भी जोड़ा और विभिन्न कार्यों के निष्पादन में सुधार किया।
- एसबीटी 1.3 (2019): इस संस्करण ने कौरसियर को डिफ़ॉल्ट निर्भरता प्रबंधक के रूप में अपनाकर निर्भरता हल को तीव्र करके[14] उपयोगकर्ता अनुभव में उल्लेखनीय रूप से सुधार किया। आगे के संवर्द्धन में निर्माण कैशिंग तंत्र में सुधार और जेडीके 11 के लिए समर्थन सम्मिलित है।
- एसबीटी 1.5 (2021): स्काला 3 के लिए समर्थन जोड़ा गया था। बीएसपी (निर्माण सर्वर प्रोटोकॉल) समर्थन में भी संवर्द्धन किया गया,[15] जिससे आईडीई के साथ स्पष्ट एकीकरण संभव हो सका।
- एसबीटी 1.8 (2022): यह रिलीज़ कौरसियर में अपडेट लेकर आई और आइवी समर्थन में सुधार हुआ।
- एसबीटी 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] समुदाय-योगदान वाले प्लगइन्स हस्ताक्षर, पैकेजिंग, प्रकाशन और कलाकृतियों को जारी करने, ब्लॉग और डेटाबेस जैसी अन्य सेवाओं से जुड़ने या अन्य प्रौद्योगिकियों के साथ एकीकृत करने जैसे क्षेत्रों को कवर करते हैं।
IntelliJ IDEA और VS कोड दोनों अपने स्काला प्लगइन्स के माध्यम से sbt का समर्थन करते हैं। उन दोनों आईडीई में, प्रारंभिक एसबीटी निर्माण फ़ाइलों के साथ नया प्रोजेक्ट बनाना संभव है, साथ ही यदि प्रोजेक्ट में पहले से ही एसबीटी निर्माण फ़ाइल सम्मिलित है, तो इसका उपयोग दिए गए आईडीई के लिए प्रोजेक्ट की कॉन्फ़िगरेशन उत्पन्न करने के लिए किया जा सकता है।
तुलना
निर्माण टूल्स के बीच एसबीटी के मुख्य विकल्प ग्रैडल और अपाचे मावेन हैं, दोनों जेवीएम प्लेटफॉर्म पर विकसित प्रोजेक्ट के लिए स्थापित निर्माण टूल हैं। स्काला पारिस्थितिकी तंत्र में, अन्य लोकप्रिय निर्माण उपकरण मिल है।[18] एसबीटी, ग्रैडल, अपाचे मावेन और मिल के बीच का चुनाव, आपके प्रोजेक्ट की विशिष्ट आवश्यकताओं और टूल के साथ आपकी परिचितता पर निर्भर करता है। यदि आप मुख्य रूप से स्काला के साथ कार्य कर रहे हैं, तो एसबीटी या मिल स्पष्ट विकल्प साबित हो सकता है, जबकि यदि आप कई भाषाओं या प्रौद्योगिकियों के साथ कार्य कर रहे हैं, तो अन्य दो में से स्पष्ट विकल्प हो सकता है।
sbt | Gradle | Maven | Mill | |
---|---|---|---|---|
Language and target audience | विशेष रूप से स्काला और जावा परियोजनाओं के लिए डिज़ाइन किया गया। ऐसी सुविधाएँ प्रदान करता है जो स्काला पारिस्थितिकी तंत्र की विशिष्ट आवश्यकताओं को पूरा करती हैं। स्कैला परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है। | सामान्य प्रयोजन, जावा, ग्रूवी, कोटलिन, स्काला और अन्य सहित कई भाषाओं का समर्थन करता है। जावा और कोटलिन परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है। | जावा परियोजनाओं के लिए उपयोग किया जाता है, लेकिन स्काला, ग्रूवी और कोटलिन जैसे प्लगइन्स के माध्यम से अन्य प्रोग्रामिंग भाषाओं का भी समर्थन कर सकता है। जावा प्रोजेक्ट्स में इसका सबसे अधिक उपयोग देखा जाता है। | मुख्य रूप से स्काला को लक्षित करता है, लेकिन इसमें मिश्रित स्काला/जावा परियोजनाओं में जावा कोड संकलित करने के लिए समर्थन है। स्काला परियोजनाओं में इसका सबसे अधिक उपयोग देखा जाता है और यह विशेष रूप से उन डेवलपर्स के लिए आकर्षक है जो अपने निर्माण उपकरण में सादगी और पूर्वानुमेयता को महत्व देते हैं। |
Build file syntax | बिल्ड फ़ाइलें स्कैला में लिखी जाती हैं, बिल्ड परिभाषा के दौरान स्कैला की अभिव्यक्ति और प्रकार की सुरक्षा का लाभ उठाती हैं। | बिल्ड फ़ाइलें ग्रूवी या कोटलिन में लिखी जा सकती हैं। सिंटैक्स अधिक घोषणात्मक होने की ओर झुकता है। | प्रोजेक्ट ऑब्जेक्ट मॉडल (POM) फ़ाइलें लिखने के लिए XML का उपयोग करता है। सिंटैक्स अधिक क्रियात्मक और घोषणात्मक है, जो एक मानकीकृत परियोजना संरचना और कॉन्फ़िगरेशन पर एक सम्मेलन का पक्ष लेता है। | अपनी बिल्ड फ़ाइलों के लिए सादे स्काला का उपयोग करता है। इसकी बिल्ड परिभाषाएँ स्काला ऑब्जेक्ट परिभाषाओं के रूप में लिखी जाती हैं और कार्यों को उन ऑब्जेक्ट्स के भीतर विधियों के रूप में परिभाषित किया जाता है। |
Incremental compilation | वृद्धिशील संकलन की सुविधा, कोड के केवल उन अनुभागों को संकलित करना जो बदल गए हैं और इस प्रकार विकास प्रक्रिया को गति देते हैं। | जावा और कोटलिन परियोजनाओं के लिए वृद्धिशील संकलन का भी समर्थन करता है, लेकिन स्काला वृद्धिशील संकलन के लिए इसकी क्षमता एसबीटी की तरह विकसित नहीं है। | डिफ़ॉल्ट रूप से, यह वृद्धिशील संकलन का समर्थन नहीं करता है। इसे स्कैला प्रोजेक्ट्स के लिए स्केला-मेवेन-प्लगइन जैसे प्लगइन्स या जावा प्रोजेक्ट्स के लिए जावा-कंपाइलर-प्लगइन के वृद्धिशील संकलन सुविधा के माध्यम से सक्षम किया जा सकता है। | विशेषताएं वृद्धिशील संकलन. इसके अतिरिक्त, प्रत्येक कार्य के लिए कार्य आउटपुट और पृथक वातावरण की आक्रामक कैशिंग का उपयोग किया जाता है, जो निर्माण की गति और सटीकता को और बेहतर बनाता है। |
Extensibility and plugins | एक व्यापक प्लगइन पारिस्थितिकी तंत्र प्रदान करता है, जो डेवलपर्स को बिल्ड टूल की कार्यक्षमता को बढ़ाने की अनुमति देता है। | कई भाषाओं और प्लेटफार्मों पर इसकी व्यापक स्वीकृति के कारण, ग्रैडल का प्लगइन पारिस्थितिकी तंत्र एसबीटी की तुलना में अधिक व्यापक और विविध है। | अपने व्यापक इतिहास और जावा समुदाय के भीतर व्यापक स्वीकृति के कारण एसबीटी की तुलना में इसका प्लगइन पारिस्थितिकी तंत्र बड़ा और अधिक परिपक्व है। | इसमें एसबीटी की तुलना में छोटा प्लगइन इकोसिस्टम है, लेकिन एक अलग तरीके से एक्स्टेंसिबिलिटी का समर्थन करता है:
मिल में, आप पुन: प्रयोज्य मॉड्यूल और लाइब्रेरीज़ को सीधे अपनी बिल्ड फ़ाइलों में, सादे स्काला में परिभाषित कर सकते हैं। आप अपनी बिल्ड फ़ाइलों में तृतीय-पक्ष स्काला लाइब्रेरीज़ को आयात और उपयोग भी कर सकते हैं। |
Performance | वृद्धिशील संकलन और समानांतर कार्य निष्पादन जैसे प्रदर्शन अनुकूलन को नियोजित करता है, लेकिन परिणाम परियोजना की जटिलता और विशिष्ट उपयोग के मामलों के आधार पर भिन्न होते हैं। | निर्माण में तेजी लाने के लिए पृष्ठभूमि में चल रही डेमॉन प्रक्रिया का उपयोग करते हुए, प्रदर्शन पर जोर देता है। | डिफ़ॉल्ट रूप से, यह वृद्धिशील संकलन, न ही समानांतर निष्पादन का समर्थन नहीं करता है। दोनों को प्लगइन्स और बिल्ड टूल विकल्पों का उपयोग करके हासिल किया जा सकता है। | वृद्धिशील संकलन और समानांतर निष्पादन का समर्थन करता है। आम तौर पर इसे कैशिंग के लिए अधिक आक्रामक दृष्टिकोण अपनाने के लिए माना जाता है, जो अक्सर एसबीटी की तुलना में तेजी से वृद्धिशील निर्माण समय की ओर ले जाता है, खासकर बड़ी परियोजनाओं के लिए। |
Build lifecycle | बिल्ड परिभाषाओं के लिए जटिल डीएसएल (डोमेन विशिष्ट भाषा) का उपयोग करता है, जो बिल्ड प्रक्रिया पर अधिक विस्तृत नियंत्रण प्रदान करता है। | इसका डीएसएल एसबीटी की तुलना में सरल है, अधिक घोषणात्मक है और शुरुआती लोगों के लिए अधिक सहज महसूस हो सकता है। | एक निश्चित निर्माण जीवनचक्र का परिचय देता है जिसमें संकलन, परीक्षण, पैकेज, इंस्टॉल आदि जैसे अच्छी तरह से परिभाषित चरण शामिल हैं। इसके माध्यम से, मावेन परियोजनाओं में एक सुसंगत संरचना प्रदान करता है लेकिन लचीलेपन का अभाव है। | बिल्ड को कार्यों के संदर्भ में परिभाषित किया गया है। प्रत्येक कार्य किसी बिल्ड में कार्य की एक इकाई का प्रतिनिधित्व करता है, जैसे मॉड्यूल संकलित करना, परीक्षण चलाना, पैकेज बनाना आदि। कार्य अन्य कार्यों पर निर्भर हो सकते हैं। मिल कार्यों को सही क्रम में चलाने का ध्यान रखती है। |
Community | इसका एक सक्रिय, सहायक समुदाय है, जो मुख्य रूप से स्काला प्रोग्रामिंग भाषा पर केंद्रित है। | इसका समुदाय एसबीटी की तुलना में अधिक व्यापक और विविध है, जो विभिन्न प्रोग्रामिंग भाषाओं और प्रौद्योगिकियों पर ध्यान केंद्रित करता है। | इसका समुदाय बड़ा और अधिक विविध है, जो कई प्रोग्रामिंग भाषाओं और प्रौद्योगिकियों को संबोधित करता है। | मिल एक सक्रिय रूप से विकसित ओपन-सोर्स प्रोजेक्ट है। इसके आसपास का समुदाय एसबीटी के आसपास के समुदाय जितना बड़ा या स्थापित नहीं है, लेकिन यह सक्रिय और व्यस्त है। |
यह भी देखें
संदर्भ
- ↑ sbt - Download
- ↑ eed3si9n (2023-06-02). "Announce: sbt 1.9.0". eed3si9n.com. Retrieved 2023-06-12.
- ↑ "sbt Reference Manual — Frequently Asked Questions". www.scala-sbt.org. Retrieved 2023-06-15.
- ↑ "sbt Reference Manual — sbt Reference Manual". www.scala-sbt.org. Retrieved 2023-06-15.
- ↑ "मिलकर बेहतर सॉफ्टवेयर बनाएं". GitHub (in English). Retrieved 2023-06-15.
- ↑ Welcome!, The Scala Programming Language, 2023-06-14, retrieved 2023-06-15
- ↑ Dotty, Programming Methods Laboratory EPFL, 2023-06-14, retrieved 2023-06-15
- ↑ "sbt Reference Manual — Developer's Guide (Work in progress)". www.scala-sbt.org. Retrieved 2023-06-15.
- ↑ "Releases · sbt/sbt". GitHub (in English). Retrieved 2023-06-15.
- ↑ 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) - ↑ "जिंक 1.0 के साथ संकलन समय को तेज करें". www.scala-lang.org. Retrieved 2023-06-15.
- ↑ "स्काला.जे.एस". Scala.js. Retrieved 2023-06-15.
- ↑ "Scala Native — Scala Native 0.4.14 documentation". scala-native.org. Retrieved 2023-06-15.
- ↑ "Coursier · Pure Scala Artifact Fetching". get-coursier.io. Retrieved 2023-06-15.
- ↑ "सर्वर प्रोटोकॉल बनाएँ". build-server-protocol.github.io (in English). Retrieved 2023-06-15.
- ↑ sbt: .sbt build definition
- ↑ "प्लग-इन". sbt. Retrieved 17 October 2014.
- ↑ "Introduction to Mill :: Mill". mill-build.com. Retrieved 2023-06-15.
बाह्य संबंध
- No URL found. Please specify a URL here or add one to Wikidata.