如何使SBT子项目具有多个Scala版本?

保罗·德雷珀

我有一个使用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在两个项目中都能使用?

保罗·德雷珀

为此创建了一个SBT插件

项目/plugins.sbt

resolvers += Resolver.sonatypeRepo("releases")

addSbtPlugin("com.lucidchart" % "sbt-cross" % "1.0")

build.sbt

lazy val foo = (project in file("foo")).dependsOn(baz_2_10).settings(
  scalaVersion := "2.10.4"
)

lazy val bar = (project in file("bar")).dependsOn(baz_2_11).settings(
  scalaVersion := "2.11.5"
)

lazy val baz = (project in file("baz")).cross

lazy val baz_2_10 = baz("2.10.4")

lazy val baz_2_11 = baz("2.11.5")

它需要花费更多的时间,但是现在所有内容都可以按预期编译:sbt foo/compile可以sbt bar/compile工作。

你不必记住独特的命令,你没有从错误crossPath := false,而不像++,这是并行:sbt compile将编译foobar以及baz用正确的斯卡拉版本兼任。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在具有多个子项目的SBT项目中覆盖子项目中的设置

来自分类Dev

sbt控制台-为所有子项目设置scala版本

来自分类Dev

IntelliJ IDEA具有多个gradle子项目

来自分类Dev

为什么sbt会覆盖子项目中的scala版本?

来自分类Dev

如何将Play 2.2 Scala应用程序创建为SBT子项目

来自分类Dev

sbt 子项目:dependsOn

来自分类常见问题

如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

来自分类Dev

如何在sbt构建的所有子项目中临时更改scalaVersion?

来自分类Dev

如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

来自分类Dev

播放子项目:如何转换为build.sbt

来自分类Dev

播放子项目:如何转换为build.sbt

来自分类Dev

如何在SBT中管理可变的子项目位置?

来自分类Dev

是否有子项目/组件的Spring版本矩阵?

来自分类Dev

是否有子项目/组件的Spring版本矩阵?

来自分类Dev

如何更改Cordova子项目使用的Java版本

来自分类Dev

带有sbt子项目的scala.io.source.fromFile从根资源文件夹读取

来自分类Dev

具有左右对齐文本的离子项目

来自分类Dev

禁用sbt子项目doc生成

来自分类Dev

SBT子项目不起作用?

来自分类Dev

SBT子项目相互依赖

来自分类Dev

在sbt中编译子项目

来自分类Dev

SBT使用集合创建子项目

来自分类Dev

明确将多个应用程序作为具有共同依赖项和共同来源的子项目分开

来自分类Dev

Gradle获取子项目的版本

来自分类Dev

Gradle获取子项目的版本

来自分类Dev

SBT:在Scala构建中访问子项目的设置值

来自分类Dev

Scala Sbt-测量子项目的任务时间

来自分类Dev

带有新sbt 0.13多项目定义的连字符子项目名称

来自分类Dev

带有新sbt 0.13多项目定义的连字符子项目名称

Related 相关文章

热门标签

归档