Trước khi tôi có một cái gì đó như thế này (giản thể), sử dụng SBT 0.11.3:Trộn build.sbt với dự án/Build.scala và tập hợp
// project/Build.scala
import sbt._
import Keys._
object MyBuild extends Build {
lazy val standardSettings = Defaults.defaultSettings ++ Seq(
version := "0.2",
scalaVersion := "2.9.2"
)
lazy val main = Project(
id = "main",
base = file("."),
settings = standardSettings,
aggregate = Seq(sub)
)
lazy val sub = Project(
id = "main-sub",
base = file("sub"),
settings = standardSettings
)
}
Nhưng tôi muốn giữ lại càng nhiều thông tin càng tốt trong đồng bằng build.sbt
tệp. Vì vậy, bây giờ tôi có
// build.sbt
version := "0.2"
scalaVersion := "2.9.2"
Và
// project/Build.scala
import sbt._
import Keys._
object MyBuild extends Build {
lazy val main = Project(
id = "main",
base = file("."),
aggregate = Seq(sub)
)
lazy val sub = Project(
id = "main-sub",
base = file("sub")
)
}
Nhưng điều đó dường như không trộn trong cài đặt của tôi từ build.sbt
vào các dự án phụ:
> show version
[info] main-sub/*:version
[info] 0.1-SNAPSHOT
[info] main/*:version
[info] 0.2
> show scala-version
[info] main-sub/*:scala-version
[info] 2.9.1
[info] main/*:scala-version
[info] 2.9.2
Làm thế nào để khắc phục điều này? Tôi cũng đã cố thêm rõ ràng settings
vào tiểu dự án, ví dụ:
settings = Defaults.defaultSettings
settings = Project.defaultSettings
settings = MyBuild.settings
settings = main.settings
(chắc chắn một điều này nên làm gì ?!)
... nhưng không ai làm việc.
[sbt doc fur multi projects] (https://github.com/harrah/xsbt/wiki/Getting-Started-Multi-Project) gần như có trường hợp của tôi. Nó cho rằng 'build.sbt' chính sẽ được hợp nhất với các tệp' .sbt' từ các tiểu dự án. Nó thậm chí còn đưa ra một ví dụ về việc ghi đè phiên bản, tuy nhiên nó không thể chứng minh được sự thừa kế, điều này sẽ xảy ra theo sự đọc của tôi về tài liệu đó. –