Build.sbt और build.scala में क्या अंतर है?


107

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

तो मध्य क्या अंतर है build.sbtऔर build.scala?
कौन सा अधिक पसंद किया जाता है और क्यों?

जवाबों:


95

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

name := "hello"

version := "1.0"

एक शॉर्टहैंड नोटेशन लगभग इसी के बराबर है project/Build.scala:

import sbt._
import Keys._

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

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

एसबीटी दस्तावेज देखें जिसे ".सीकाला बिल्ड डेफिनिशन" कहा जाता है , विशेष रूप से सेक्शन "रिलेटिंग बिल्ड.sbt to Build.scala"।

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


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

1
इस विषय पर एसबीटी प्रलेखन - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33

31

जुलाई 2016 को अपडेट करें (3 साल बाद)

Build.scalaआधिकारिक तौर पर sbt 0.13.12 में पदावनत किया गया है

Buildविशेषता के पक्ष में पदावनत किया गया है .sbtप्रारूप

पीआर 2530 लागू करता है कि deprecation।
" परिशिष्ट: .scalaबिल्ड परिभाषा " को अपडेट किया गया है।


13

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.