我有一个使用Scala 2.10的项目和一个使用Scala 2.11的项目.它们依赖于一个可以用两者编译的通用项目.
lazy val foo = (project in file("foo")).dependsOn(baz).settings(
scalaVersion := "2.10.4"
)
lazy val bar = (project in file("bar")).dependsOn(baz).settings(
scalaVersion := "2.11.4"
)
lazy val baz = (project in file("baz")).settings(
crossScalaVersions := Seq("2.10.4", "2.11.4"),
scalaVersion := "2.10.4"
)
Run Code Online (Sandbox Code Playgroud)
然后
$ sbt bar/update
[info] Updating {file:/home/paul/Private/test/}bar...
[info] Resolving baz#baz_2.11;0.1-SNAPSHOT ...
[warn] module not found: baz#baz_2.11;0.1-SNAPSHOT
[warn] ==== local: tried
[warn] /home/paul/.ivy2/local/baz/baz_2.11/0.1-SNAPSHOT/ivys/ivy.xml
[warn] ==== public: tried
[warn] http://repo1.maven.org/maven2/baz/baz_2.11/0.1-SNAPSHOT/baz_2.11-0.1-SNAPSHOT.pom
[info] Resolving jline#jline;2.12 ...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] …Run Code Online (Sandbox Code Playgroud) 我有一个针对Scala 2.10、2.11和2.12的多模块SBT构建交叉构建。我想添加一个支持Java 8的子模块。但是,这仅适用于Scala 2.11(和2.12)。我的目标是让SBT仅为2.11和2.12构建此特定子模块,而对于2.10则忽略它。特别是,不要发布2.10的工件。
我目前的工作假设是重写publish,libraryDependencies并unmanagedSourceDirectories基于斯卡拉版本键,但我一直在寻找一个更好的解决方案。
我正在努力crossScalaVersions解决子项目的工作原理.
我有一个用2.10(foo)编译的项目和一个用2.11(bar)编译的项目.他们共享一个交叉编译的项目(常见).
如何编译项目foo和bar?
build.sbt
lazy val root = (project in file(".")).aggregate(foo, bar).settings(
crossScalaVersions := Seq("2.10.4", "2.11.4")
)
lazy val foo = (project in file("foo")).dependsOn(common).settings(
crossScalaVersions := Seq("2.10.4"),
scalaVersion := "2.10.4"
)
lazy val bar = (project in file("bar")).dependsOn(common).settings(
crossScalaVersions := Seq("2.11.4"),
scalaVersion := "2.11.4"
)
lazy val common = (project in file("common")).settings(
crossScalaVersions := Seq("2.10.4", "2.11.4")
)
Run Code Online (Sandbox Code Playgroud)
项目/ build.properties
sbt.version=0.13.7
Run Code Online (Sandbox Code Playgroud)
富/ SRC /主/阶/ Foo.scala
object Foo {
<xml>{new C}</xml>
}
Run Code Online (Sandbox Code Playgroud)
酒吧/ SRC /主/阶/ Bar.scala
case class Bar(a: C, …Run Code Online (Sandbox Code Playgroud)