Wenn ich mit Scala 2.10 und SBT 0.13.2 baue, möchte ich -language:_
haben, was aber von Scala 2.9 nicht erkannt wird. Es gibt eine Frage über die Einstellungen scalacOptions
für Cross-Compilation (Conditional scalacOptions with SBT), aber es ist über build.sbt
. Ich benutze Build.scala
, weil ich einen Multiprojektbau mache.Wie setzt man verschiedene scalacOptions pro Scala-Version beim Cross-Compilieren mit Build.scala?
Ich habe dies versucht:
def scalacOptionsVersion(v: String) = {
Seq(
"-unchecked",
"-deprecation",
"-Xlint",
"-Xfatal-warnings",
"-Ywarn-dead-code",
"-target:jvm-1.7",
"-encoding", "UTF-8") ++ (
if (v.startsWith("2.9")) Seq() else Seq("-language:_"))
}
override val settings = super.settings ++ Seq(
...,
scalaVersion := "2.10.4",
scalacOptions <++= scalaVersion(scalacOptionsVersion),
crossScalaVersions := Seq("2.9.2", "2.10.4", "2.11.4"),
...
)
aber ich erhalte eine Fehlermeldung:
[error] /Users/benwing/devel/lemkit/scala/project/build.scala:29: type mismatch;
[error] found : sbt.Def.Initialize[Equals]
[error] required: sbt.Def.Initialize[sbt.Task[?]]
[error] Note: Equals >: sbt.Task[?], but trait Initialize is invariant in type T.
[error] You may wish to define T as -T instead. (SLS 4.5)
[error] scalacOptions <++= scalaVersion(scalacOptionsVersion),
[error] ^
[error] one error found
Hilfe?
Welche Version von sbt? – monkjack
Mein Projekt ist für 0.13.2 ausgelegt. Vielleicht gibt es eine Möglichkeit, Multiprojekt-Builds mit 'build.sbt' durchzuführen, aber ich weiß nicht, wie und wie es aussieht, sollte die Antwort kein Umschalten des gesamten Build-Skripts erfordern. –
Gerade inklusive SBT-Version in Frage. –