Scala 和 Scala.js 版本包含在工件 ID 中
Scala and Scala.js version included in artifact id
我刚刚成功发布了我的第一个 Scala 和 Scala.js 跨构建库到 Sonatype,现在可以在我的应用程序中使用以下两个工件:
- https://search.maven.org/artifact/com.github.fbaierl/scala-tarjan_2.12/0.1.1/jar
- https://search.maven.org/artifact/com.github.fbaierl/scala-tarjan_sjs0.6_2.12/0.1.1/jar
我现在的问题是:为什么工件id中包含Scala和Scala.js版本?我不认为我以前见过这样的事情所以我想知道我是否做错了什么。这是我的 build.sbt
:https://github.com/fbaierl/scalajs-cross-compile-tarjan/blob/03954a3e2d1442ad339298a986209c1403c9692e/build.sbt
这就是 Scala 工件的工作方式。几乎所有工件看起来都是这样的——当您在 sbt 中使用这些工件时它并不明显,因为 (IIRC) _2.12
由 sbt 中的 %%
运算符隐含。 (并且 _sjs0.6
由 %%%
运算符隐含。)
其根本原因是不同主要版本的 Scala 编译器(Scala 版本 epoch.major.minor)编译的工件不是二进制兼容的(否则语言和标准库无法发展) .你不能混合,例如_2.12 和 _2.11 工件在类路径上,因此必须为两个 Scala 版本分别发布同一库的“相同”版本,因此需要后缀来区分它们。
我刚刚成功发布了我的第一个 Scala 和 Scala.js 跨构建库到 Sonatype,现在可以在我的应用程序中使用以下两个工件:
- https://search.maven.org/artifact/com.github.fbaierl/scala-tarjan_2.12/0.1.1/jar
- https://search.maven.org/artifact/com.github.fbaierl/scala-tarjan_sjs0.6_2.12/0.1.1/jar
我现在的问题是:为什么工件id中包含Scala和Scala.js版本?我不认为我以前见过这样的事情所以我想知道我是否做错了什么。这是我的 build.sbt
:https://github.com/fbaierl/scalajs-cross-compile-tarjan/blob/03954a3e2d1442ad339298a986209c1403c9692e/build.sbt
这就是 Scala 工件的工作方式。几乎所有工件看起来都是这样的——当您在 sbt 中使用这些工件时它并不明显,因为 (IIRC) _2.12
由 sbt 中的 %%
运算符隐含。 (并且 _sjs0.6
由 %%%
运算符隐含。)
其根本原因是不同主要版本的 Scala 编译器(Scala 版本 epoch.major.minor)编译的工件不是二进制兼容的(否则语言和标准库无法发展) .你不能混合,例如_2.12 和 _2.11 工件在类路径上,因此必须为两个 Scala 版本分别发布同一库的“相同”版本,因此需要后缀来区分它们。