एसबीटी और ग्रेडल की तुलना [बंद]


110

मैं स्काला में डाइविंग कर रहा हूं और एसबीटी पर ध्यान दे रहा हूं। मैं जावा / ग्रूवी परियोजनाओं में ग्रैडल के साथ काफी खुश हूं, और मुझे पता है कि ग्रेडल के लिए एक स्कैला प्लगइन है।

स्काला परियोजना में ग्रैडल के ऊपर sbt के पक्ष में क्या अच्छे कारण हो सकते हैं?


एसबीटी कुछ अर्थों में विम की तरह है: यदि आप इसे टटोलते हैं, तो आप प्रसन्न होंगे। और वैसे, मावेन और लेइन भी है (क्लोजर के लिए बनाया गया था, लेकिन स्केला के साथ भी काम करता है)।
ओम-नॉम-नॉम-

18
एसबीटी में जाने के लिए दबाव महसूस न करें। स्काला समुदाय के कुछ प्रसिद्ध सदस्य ग्रैडल का उपयोग करते हैं। इसके बजाय, प्रयोग के रूप में एसबीटी का उपयोग करें, यह जानकर कि आप इसके बजाय ग्रैडल का उपयोग कर सकते हैं।
डैनियल सी। सोबरल

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

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

4
नहीं, वे उत्तर मुख्य रूप से परीक्षण योग्य तथ्यों के कथन हैं, राय के नहीं। हालांकि यह प्रश्न अनपेक्षित उत्तरों को आकर्षित कर सकता है, लेकिन वास्तव में ऐसा नहीं किया गया है। यह उपकरण के बीच वास्तविक अंतर के उपयोगी विवरण के रूप में खुला रहना चाहिए।
इरिकसन

जवाबों:


61

ध्यान दें कि SBT और ग्रेडल के बीच एक महत्वपूर्ण अंतर इसकी निर्भरता प्रबंधन है :

  • SBT : आइवी , एक संशोधन के साथ जो एक निश्चित एक (1.5.2, उदाहरण के लिए) या नवीनतम (या गतिशील) एक के रूप में दिया जा सकता है।
    " आइवी डिपेंडेंसी " देखें
    जिसका अर्थ है कि "-SAPAPOT" तंत्र समर्थन समस्याग्रस्त हो सकता है, भले ही इस धागे में मार्क हर्र का विवरण हो :

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

आइवी समर्थन नहीं करता है, जहां तक ​​मुझे पता है, मावेन जिस तरह से करता है, उसमें स्नैपशॉट प्रकाशित कर रहा है। मेरा मानना ​​है कि मैंने इसे कहीं और कहा है, लेकिन अगर कोई भी स्थिति में सुधार करना चाहता है, तो मेरी राय यह है कि ग्रैडल टीम के साथ काम करने के लिए प्रयास निर्भरता प्रबंधन कोड का पुन: उपयोग करने के लिए सबसे अच्छा खर्च होता है।

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

इस ट्वीट में उल्लेख किया गया है कि भविष्य में सभी स्थिति विकसित हो सकती है:

मार्क ने अतीत में कहा कि वह एसबीटी के लिए आईवी के बजाय ग्रैडल का उपयोग करने में रुचि रखते थे।

(दोनों उपकरण एक दूसरे से सीख सकते हैं )


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

1
@ayvango आजकल sbt के लिए ऐसा नहीं है। ऐसे कई प्लगइन्स हैं जो इस कार्यक्षमता का उपयोग करते हैं, जैसे कि android-sdk-plugin
dant3

क्या आप जानते हैं कि API का उपयोग किस कार्यक्षमता के लिए किया जाता है?
अय्यांगो

तो यह कुछ ऐसा है जब मावेन और ग्रेडेल की तुलना में आइवी की कमी है? यह अजीब बात है
२३'१ trib

53

मेरे लिए SBT की प्रमुख विशेषताएं हैं:

  • तेज संकलन (से तेज fsc)।
  • निरंतर संकलन / परीक्षण: कमांड ~testआपको एक संशोधन को बचाने के लिए हर बार प्रोजेक्ट को पुन : व्यवस्थित और परीक्षण करेगा।
  • कई स्कैला संस्करणों में क्रॉस-संकलन और क्रॉस-प्रकाशन।
  • सही स्कैला संस्करण संगतता के साथ निर्भरता को स्वचालित रूप से पुनर्प्राप्त करना।

निम्न हैं:

  • एक हाइरोग्लिफ़िक सिंटैक्स जो नए उपयोगकर्ताओं को हतोत्साहित करता है (विशेषकर यदि वे जावा से आते हैं)
  • "कार्य" को परिभाषित करने का कोई आसान तरीका नहीं है: यदि आपको एक विशेष निर्माण प्रक्रिया की आवश्यकता है, तो आपको या तो एक प्लगइन खोजने की आवश्यकता होगी, या स्वयं एक प्लगइन लिखना होगा।

क्या मैं सही हूं कि समस्याओं के कारण क्रॉस-संकलन / प्रकाशन सुविधा की आवश्यकता थी / है स्कैला की पीछे की तरफ द्विआधारी अपूर्णता है?
हंस वेस्टरबेक

1
हाँ। और स्कला 2.10 पर जाने पर ये समस्याएँ फिर से हो सकती हैं।
प्रतिगामी

1
मेरे द्वारा जोड़े गए दो और अंतर हैं: * एसबीटी में, आत्म निर्भरता को प्रबंधित करना आसान है, आईएमओ। * SBT परीक्षण धावक तेज लगता है; मुझे संदेह है कि यहाँ कुछ चालाक सम्‍मिलित सम्‍मिलित हैं लेकिन मैं अनुमान लगा रहा हूँ। एसबीटी एक अधिक सक्षम लेकिन कम परिपक्व उत्पाद की तरह लगता है।
रिक -777

25
For हाइरोग्लिफ़िक सिंटैक्स ’के लिए +1 नीचे की ओर। यह एसबीटी के साथ मेरी सबसे बड़ी पकड़ है। ऑपरेटर ओवरलोडिंग हमेशा दुरुपयोग की ओर जाता है: - /
रॉन डाहलग्रेन

7
क्रिप्टिक एसबीटी सिंटैक्स, स्केला में सबसे खराब लाता है। ग्रैडल एक अच्छी तरह से सोचे हुए डोमेन मॉडल और सीधे आगे के सिंटैक्स पर आधारित है।
13'13

40

sbt एक Scala DSL है और इसके लिए Scala एक प्रथम श्रेणी का नागरिक है, इसलिए मूल रूप से यह एक अच्छा फिट है।

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

मैंने व्यक्तिगत रूप से sbt को छोड़ दिया, क्योंकि यह हल करने की तुलना में अधिक समस्याएं पैदा कर रहा था। मैं वास्तव में वर्गीकृत करने के लिए बंद कर दिया।

जाओ पता लगाओ।


2
जहाँ तक मुझे पता है, केवल एक बहुत बड़ा बदलाव आया था: जब sbt 0.7.x से 0.1.x पर स्विच किया गया था
om-nom-nom

1
यदि आप sbt 0.11.2 के लिए एक प्लगइन का उपयोग करते हैं, और फिर sbt 0.12 पर जाते हैं, तो आपको एक नया संस्करण संकलित करने के लिए प्लगइन लेखक की प्रतीक्षा करने या स्वयं करने की आवश्यकता है। विचार-एसबीटी एक उदाहरण है।
fmpwizard

4
@fmpwizard sbt 0.12 लाइन अभी तक रिजेक्ट नहीं हुई है ... FUD फैलाना बंद करें।
प्रतिमान

3
यह sbt उपयोग करने के लिए असंभव नहीं है, हमारी टीम इसका उपयोग करती है। लेकिन मेरी टिप्पणी इस उत्तर को बताने के लिए थी, जिसमें कहा गया था ... "लेकिन sbt संस्करणों के बीच बड़े असंगत बदलावों से ग्रस्त है, जिससे किसी कार्य के लिए सही कार्य करने वाले प्लगइन को ढूंढना और उसे काम में लाना मुश्किल हो जाता है ..." जैसे आप नोटिस करते हैं , मैं सिर्फ scct प्लगइन का उपयोग नहीं कर सकता, मुझे इसे संशोधित करना था (हाँ छोटा परिवर्तन, लेकिन फिर मुझे इसे कहीं प्रकाशित करना था ताकि मेरी पूरी टीम इसे एक्सेस कर सके) बिना किसी अच्छे कारण के दर्द।
fmpwizard

3
क्या आप अलग-अलग स्केल संस्करणों के लिए ग्रेडिंग का उपयोग करते हुए क्रॉस संकलन करने में सक्षम हैं?
माकिसुजी

4

मैं ग्रेड करने के लिए काफी नया हूं, और sbt के लिए बहुत नया हूं - मुझे अब तक sbt के बारे में जो पसंद है वह इंटरैक्टिव कंसोल है। यह मुझे 'निरीक्षण' जैसी आज्ञाओं का उपयोग करने की अनुमति देता है ताकि यह पता चल सके कि क्या हो रहा है। AFAIK gradle इस atm जैसा कुछ प्रदान नहीं करता है।


-11

Sbt और gradle, दोनों सांख्यिकीय रूप से टाइप की गई भाषाओं पर आधारित हैं .... लेकिन sbt के कुछ फायदे हैं:

  • बेहतर प्लगइन समर्थन, विशेष रूप से ऑटोप्लागिन
  • कार्यों के बीच कार्य निर्माण और निर्भरता प्रबंधन
  • sbt विशेष रूप से इस अर्थ में scala प्रोजेक्ट्स को सूट करता है कि यह वृद्धिशील बिल्ड का समर्थन करता है और sbt का अधिकांश भाग scala में लिखा जाता है और sbt बिल्ड परिभाषाएँ scala में लिखी जाती हैं
  • sbt के पास कई उपयोगी अंतर्निहित कार्यों के साथ अंतरालीय शेल समर्थन है
  • sbt डिफ़ॉल्ट जीवनचक्र बहुत उपयोगी है और बहुत कम प्रयास के साथ नौसिखिया शुरू कर सकता है

1
ग्रैडल ग्रूवी पर आधारित है जो कि सांख्यिकीय रूप से टाइप की गई भाषा नहीं है।
विस्ट्रिटियम

ग्रैडल कार्यों के बीच निर्भरता प्रबंधन करता है, यह एक कार्य बनाने के लिए जितना संभव हो उतना आसान है, मुझे नहीं पता है कि ग्रेडेल की तुलना में प्लगइन लिखना कितना आसान हो सकता है जो ग्रूवी, जावा, ग्रेडल प्लगइन्स और संभवतः अधिक ले सकता है।
जॉनराइड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.