工件ID中包含的Scala和Scala.js版本

时间:2018-11-04 15:27:32

标签: scala maven scala.js sonatype cross-build

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

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

1 个答案:

答案 0 :(得分:2)

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

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