Sự khác biệt giữa build.sbt và build.scala là gì?


107

Tôi bắt đầu học Scala và hầu như trong mọi hướng dẫn, tôi đều thấy một build.sbttệp mô tả cài đặt dự án. Nhưng bây giờ tôi đã cài đặt giter8và tạo một dự án từ mẫu. Và dự án được tạo từ build.sbttệp bị thiếu mẫu , nhưng nó có build.scala(dường như được sử dụng cho các mục đích tương tự, nhưng nó linh hoạt hơn).

Vì vậy, sự khác biệt giữa build.sbtvà là build.scalagì?
Cái nào được ưu tiên hơn và tại sao?

Câu trả lời:


95

Để đưa ra một ví dụ ngắn gọn, điều này build.sbt:

name := "hello"

version := "1.0"

là một ký hiệu viết tắt gần tương đương với điều này 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"      
  )
}

Các .sbttập tin cũng có thể bao gồm vals, lazy vals, và defs (nhưng không phải objectlà và classes).

Xem tài liệu SBT có tên "Định nghĩa xây dựng .scala" , đặc biệt là phần "Liên hệ giữa build.sbt với Build.scala".

Hãy xem xét một .scalađịnh nghĩa xây dựng nếu bạn đang làm một cái gì đó phức tạp mà bạn muốn có sự biểu đạt đầy đủ của Scala.


6
Trên "build.sbt hiếm khi kết thúc là đủ", đúng trong phiên bản 0.12 trở về trước rằng một khi bạn muốn xác định nhiệm vụ hoặc bản dựng nhiều mô-đun, bạn cần tệp .scala. Điều này sẽ được giải quyết trong 0.13, nơi bạn hiện có thể xác định vals và nhiều dự án. Tất nhiên, bạn vẫn được hoan nghênh bắt đầu với .scala.
Mark Harrah

1
Tài liệu SBT về chủ đề này - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.