Apa perbedaan antara build.sbt dan build.scala?


107

Saya mulai belajar Scala dan hampir di setiap tutorial saya melihat build.sbtfile yang menjelaskan pengaturan proyek. Tapi sekarang saya telah menginstal giter8dan membuat proyek dari template. Dan proyek yang dihasilkan dari template build.sbtfile tidak terjawab , tetapi memiliki build.scala(yang tampaknya digunakan untuk tujuan yang sama, tetapi lebih fleksibel).

Jadi apa perbedaan antara build.sbtdan build.scala?
Mana yang lebih disukai dan mengapa?

Jawaban:


95

Sebagai contoh singkatnya, ini build.sbt:

name := "hello"

version := "1.0"

adalah notasi singkatan yang kira-kira setara dengan ini 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"      
  )
}

The .sbtFile juga dapat mencakup vals, lazy vals, dan defs (tapi tidak objects dan classes).

Lihat dokumen SBT bernama ".scala build definition" , khususnya bagian "Relating build.sbt to Build.scala".

Pertimbangkan .scaladefinisi build jika Anda melakukan sesuatu yang rumit di mana Anda menginginkan ekspresi penuh Scala.


6
Pada "build.sbt jarang berakhir cukup", benar di 0.12 dan sebelumnya bahwa setelah Anda ingin mendefinisikan tugas atau build multi-modul, Anda memerlukan file .scala. Ini harus ditangani dalam 0.13, di mana Anda sekarang dapat mendefinisikan vals dan beberapa proyek. Anda tentu saja tetap dapat memulai dengan .scala.
Mark Harrah

1
Dokumentasi SBT tentang topik ini - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.