2017-03-20 14 views
8

Tôi đang làm việc với một dự án lớn với nhiều tiểu dự án, một số dự án có tiểu dự án của riêng họ. Ngày đầu đó, tôi muốn một số người trong số họ được năng động - đưa ra một List một nơi nào đó trong xây dựng dự án, tôi muốn tạo ra một dự án cho mỗi yếu tố.Xây dựng nhiều dự án SBT mà không sử dụng các biểu mẫu lười biếng

Vì những lý do đó, phải xác định lazy val cho mỗi dự án trong build.sbt rất cồng kềnh. Có cách nào khác để khai báo các dự án, như một phương pháp giống như addProject mà chúng ta có thể gọi ở bất kỳ đâu không? Có một số plugin SBT giúp với điều đó?

Trả lời

1

Sbt sử dụng macro để biến cấp cao nhất val thành các dự án, vì vậy tôi không nghĩ rằng bạn có thể thoát khỏi phần đó. Tuy nhiên, bạn có thể xác định tất cả các bạn xây dựng trong Project => Project chức năng: (lưu ý rằng bạn cũng composability "miễn phí" với hàm hợp)

def myConf: Project => Project = 
    _.enablePlugins(ScalaJSPlugin) 
    .settings(scalaVersion := "2.12.0") 

Sau đó, chỉ cần sử dụng project.configure(myConf) cho đơn định nghĩa dự án dòng:

lazy val subProject1 = project.configure(myConf) 
lazy val subProject2 = project.configure(myConf) 
lazy val subProject3 = project.configure(myConf) 
lazy val subProject4 = project.configure(myConf) 
... 
Các vấn đề liên quan