2013-08-01 4 views
99

मैंने स्कैला सीखना शुरू किया और लगभग हर ट्यूटोरियल में मुझे build.sbt फ़ाइल दिखाई देती है जो परियोजना सेटिंग्स का वर्णन करती है। लेकिन अब मैंने giter8 स्थापित किया है और टेम्पलेट से एक प्रोजेक्ट बनाया है। और टेम्पलेट से उत्पन्न प्रोजेक्ट build.sbt फ़ाइल चूक गया, लेकिन इसमें build.scala (जो समान उद्देश्यों के लिए उपयोग किया जाता है, लेकिन यह अधिक लचीला है)।build.sbt और build.scala के बीच क्या अंतर है?

तो build.sbt और build.scala के बीच क्या अंतर है?
जो अधिक पसंदीदा है और क्यों?

उत्तर

90

एक संक्षिप्त उदाहरण के लिए, इस build.sbt:

import sbt._ 
import Keys._ 

object Build extends Build { 
    lazy val root = Project(id = "root", base = file(".")).settings(
    name := "hello", 
    version := "1.0"  
) 
} 
:

name := "hello" 

version := "1.0" 

एक आशुलिपि संकेतन मोटे तौर पर इस project/Build.scala के बराबर है

.sbt फ़ाइल में val एस, lazy val एस, और def एस भी शामिल हो सकता है (लेकिन object एस औरनहींईएस)।

the SBT document called ".scala build definition" देखें, विशेष रूप से "Build.scala से संबंधित build.sbt" अनुभाग देखें।

.scala बिल्ड परिभाषा पर विचार करें यदि आप कुछ जटिल कर रहे हैं जहां आप स्कैला की पूर्ण अभिव्यक्ति चाहते हैं।

+5

"build.sbt शायद ही कभी पर्याप्त होने के समाप्त होता है" पर, यह 0.12 में सच है और इससे पहले कि जब आप कार्य या बहु-मॉड्यूल बिल्ड को परिभाषित करना चाहते हैं, तो आपको .scala फ़ाइलों की आवश्यकता होती है। इसे 0.13 में संबोधित किया जाना चाहिए, जहां आप अब vals और एकाधिक परियोजनाओं को परिभाषित कर सकते हैं। हालांकि, अभी भी .ccala के साथ शुरू करने के लिए आपका स्वागत है। इस विषय पर –

+1

एसबीटी दस्तावेज - http://www.scala-sbt.org/release/tutorial/Full-Def.html – neowulf33

13

जब .sbt एस संकलित किए जा रहे हैं, तो वे निर्देशिकाओं के साथ project निर्देशिका के अंदर विलय किए जाने से पहले हैं। उनका उपयोग रिकर्सिव कार्यों में नहीं किया जा सकता है, यानी, आप sbt को sbt से अनुकूलित नहीं कर सकते हैं, उदाहरण के लिए। अधिक विस्तृत जानकारी के लिए, संबंधित खंड को पढ़ने पर विचार एसबीटी प्रलेखन है: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

24

अद्यतन जुलाई 2016 (3 साल बाद)

Build.scala आधिकारिक तौर पर sbt 0.13.12

में हटाई गई है Build विशेषता .sbt प्रारूप

PR 2530 लागू करता है कि प्रतिवाद के पक्ष में पदावनत किया गया है।
"Appendix: .scala build definition" अद्यतन किया गया है।

संबंधित मुद्दे