Przed miałem coś takiego (uproszczony), stosując SBT 0.11.3:Mieszanie build.sbt z projektu/Build.scala i agreguje
// 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
)
}
Ale chcę zachować jak najwięcej informacji, jak to możliwe w zwykły plik build.sbt
. Więc teraz mam
// build.sbt
version := "0.2"
scalaVersion := "2.9.2"
And
// 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")
)
}
Ale to nie wydaje się mieszać w moje ustawienia z build.sbt
do projektów cząstkowych:
> 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
Jak temu zaradzić? Próbowałem również dodać wyraźny settings
do podprojektu, np.
settings = Defaults.defaultSettings
settings = Project.defaultSettings
settings = MyBuild.settings
settings = main.settings
(na pewno ten powinien zrobić ?!)
... ale nikt nie pracował.
[sbt doc fur multi projects] (https://github.com/harrah/xsbt/wiki/Getting-Started-Multi-Project) prawie ma moją sprawę. Twierdzi, że główny plik 'build.sbt' zostanie połączony z plikami' .sbt' z podprojektów. Daje nawet przykład nadpisania wersji, jednak nie demonstruje dziedziczenia, co powinno nastąpić zgodnie z moim odczytaniem tego dokumentu. –