Scala 不同版本之间的关系

本文翻译自 # # What's the relationship of the versions of scala when I use sbt to build a scala project?
译者:耐心的农夫2020
时间:2020-03-30 12:08:00

问题

我正在用 SBT 1.x 构建一个 Scala 项目(用 Scala 2.11 写的)。有一些 Scala 版本让我感到困惑。

SBT 1.x    => Scala 2.12   
SBT plugin => Scala 2.x   
My project => Scala 2.11   

请帮我弄明白这些 Scala 版本之间的差异和关系。SBT 在编译或者运行这个项目的时候是如何区分它们的?

回答

sbt 自己和它的插件使用的 Scala 版本完全独立于编译你项目的代码使用的 Scala 版本。sbt 的版本决定了它使用的 Scala版本。

  • sbt 0.13 使用 Scala 2.10
  • sbt 1.x 使用 Scala 2.12

你可以在 project/build.properties 文件中设置 sbt 的版本,例如:

sbt.version = 1.1.1

你想使用的 sbt 插件必须与给定的 sbt 版本兼容,许多 sbt 插件都使用 0.13 和 1.x 交叉编译过。

你可以使用 build.sbt 配置文件中的 scalaVersion 配置项来指定你项目的代码需要使用的 Scala 版本。例如:

scalaVersion := "2.12.4"

再次强调一下,上面项目代码使用的 Scala 版本和 sbt 使用的 Scala 版本是相互独立的。你也可以指定不同的 Scala 版本交叉编译你的代码。例如:

scalaVersion := "2.12.4"
crossScalaVersions := Seq("2.11.12", "2.12.4")

如果你用 sbt 运行 compile,将使用 Scala 2.12.4 编译项目代码。如果你用 sbt 运行 +compile,将先使用 Scala 2.11.12 编译项目代码,再使用 2.12.4 编译项目代码。关于 Cross-building 可以参考 sbt 文档。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容