scala - 如何拥有具有多个 Scala 版本的 SBT 子项目?

标签 scala sbt sbt-0.13 cross-build

我有一个使用 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"
)

进而
$ 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]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: baz#baz_2.11;0.1-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[trace] Stack trace suppressed: run last bar/*:update for the full output.
[error] (bar/*:update) sbt.ResolveException: unresolved dependency: baz#baz_2.11;0.1-SNAPSHOT: not found
[error] Total time: 1 s, completed Jan 13, 2015 11:42:51 AM

我怎样才能拥有 baz两个项目都可以使用?

最佳答案

Yevgeniy Mordovkin 提出的解决方案,声明 crossPaths := false在 baz 项目中,有效。

您可能会做的另一件事是在前面加上 +命令前:sbt '+ bar/update' .这将建立 巴兹对于所有声明的 Scala 版本。

关于scala - 如何拥有具有多个 Scala 版本的 SBT 子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929272/

相关文章:

sbt - 禁止 SBT 驱逐警告

java - 如何在play Framework 2.3.x中访问子项目中的父项目类

scala - 使用 Play! 中的 Scala 模板scala.js 中的框架

scala - Slick Lifted 表类型错误

scala - 使用 sbt 类型的 ensime 依赖

generics - 使用泛型的Scala异常签名定义

apache-spark - sbt 切换运行时依赖

design-patterns - 是否可以向 Scala 中的内置类型添加方法?

java - 在并发编程方面,Scala 比 Java 有什么优势?