Artifact ID 中包含 Scala 和 Scala.js 版本

标签 scala maven scala.js sonatype cross-build

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

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

最佳答案

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

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

关于 Artifact ID 中包含 Scala 和 Scala.js 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142353/

相关文章:

scala - akka 集群感知路由器和 akka 集群分片的不同用例?

scala - 如何允许在 Spark 2 的数据框中接受无值?

maven - Spring Boot多模块Maven项目部署

reactjs - 使用 scalajs Diode 和带有为 Posts (序列)定义的处理程序的 ApplicationCircuit,我可以以某种方式将其映射到 ModelProxy[Post] 个体吗?

scala.js - 如何从我的伪联合类型中提取正确的类型

scala - 如何向左折叠 BigDecimal 列表? ("overloaded method + cannot be applied")

json - 使用Play呈现JSON!和Scala

java - 构建 Maven selenium 应用程序时无法访问 Function

java - Hibernate重建DB表

scala.js - 在线查看 Scala.js 编译器生成的内容