1

我刚刚成功地将我的第一个 Scala 和 Scala.js 交叉构建库发布到 Sonatype,现在可以在我的应用程序中使用以下两个工件:

我现在的问题是:为什么 Scala 和 Scala.js 版本包含在工件 ID 中?我不认为我以前见过这样的事情,所以我想知道我是否做错了什么。这是我的build.sbthttps ://github.com/fbaierl/scalajs-cross-compile-tarjan/blob/03954a3e2d1442ad339298a986209c1403c9692e/build.sbt

4

1 回答 1

2

这就是 Scala 工件的工作方式。几乎所有的工件看起来都是这样的——当你在 sbt 中使用这些工件时它并不明显,因为 (IIRC)_2.12是由%%sbt 中的运算符隐含的。(并且_sjs0.6是由操作员暗示的%%%。)

其根本原因是由不同主要版本的 Scala 编译器(Scala 版本是 epoch.major.minor)编译的工件不是二进制兼容的(因为否则语言和标准库无法发展)。您不能在类路径上混合例如 _2.12 和 _2.11 工件,因此必须为两个 Scala 版本分别发布同一库的“相同”版本,因此需要使用后缀来区分它们。

于 2018-11-04T15:57:35.240 回答