2013-08-01 52 views
99

Tôi bắt đầu học Scala và hầu như trong mọi hướng dẫn, tôi thấy tệp build.sbt mô tả cài đặt dự án. Nhưng bây giờ tôi đã cài đặt giter8 và tạo một dự án từ mẫu. Và tạo ra dự án từ mẫu bỏ lỡ build.sbt tệp, nhưng nó có build.scala (có vẻ như được sử dụng cho cùng một mục đích, nhưng nó linh hoạt hơn).Sự khác biệt giữa build.sbt và build.scala là gì?

Vậy sự khác biệt giữa build.sbtbuild.scala là gì?
Được ưu tiên hơn và tại sao?

Trả lời

90

Để cung cấp một ví dụ ngắn gọn, đây build.sbt:

name := "hello" 

version := "1.0" 

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

Tệp .sbt cũng có thể bao gồm val s, lazy val s và def s (nhưng không phải object s và class es).

Xem the SBT document called ".scala build definition", đặc biệt là phần "Relating build.sbt to Build.scala".

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

+5

Trên "build.sbt hiếm khi kết thúc là đủ", nó là đúng trong 0,12 và trước đó một khi bạn muốn xác định nhiệm vụ hoặc xây dựng đa mô-đun, bạn cần tệp .scala. Điều này cần được giải quyết trong 0,13, nơi bạn có thể xác định các vals và nhiều dự án. Tất nhiên bạn vẫn được chào đón để bắt đầu với .scala. –

+1

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

13

Khi .sbt s đang được biên soạn, trước khi chúng được hợp nhất với các tệp .scala bên trong thư mục project. Chúng không thể được sử dụng trong các nhiệm vụ đệ quy, nghĩa là, bạn không thể tùy chỉnh sbt từ sbt, ví dụ. Để biết thông tin chi tiết hơn, hãy cân nhắc đọc phần có liên quan là tài liệu SBT: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

24

Cập nhật tháng 7 năm 2016 (3 năm sau)

Build.scala chính thức phản đối trong sbt 0.13.12

Các đặc điểm Build bị phản đối có lợi cho .sbt định dạng

PR 2530 cụ mà deprecation.
"Appendix: .scala build definition" đã được cập nhật.

Các vấn đề liên quan