我对斯卡拉很陌生。在将多模块项目升级到 Scala 2.13 时,我发现在 Scala 2.12 中编译的这个依赖项class not found
在运行时抛出异常
java.lang.NoClassDefFoundError: scala/collection/mutable/ArrayOps$ofRef
这个类在 2.13 中被移除。它仅在2.12之前可用。我正在寻找一种强制 v2.12仅编译此依赖项的方法。
我尝试使用交叉构建,但这不适用于核心库,因为使用以下构造的依赖项 url:
"org.scala-lang" % "scala-library" % scalaVersion.value
好像
https://repo1.maven.org/maven2/org/scala-lang/scala-library_2.12.15/2.12.15/scala-library_2.12.15-2.12.15.pom
此外,交叉构建似乎是允许使用其兼容的依赖版本编译具有不同 scala 版本的子模块的方式,而不是用于在单个依赖项上强制执行 scala 版本。
编辑 1: 这是构建定义:
root
|
main
|---dependency w/o 2.13 build
|
acceptanceTests
|---dependency w/o 2.13 build
|
(other modules)
该依赖项是一个内部公共库。这在编译时使用类scala/collection/mutable/ArrayOps 。从scala-lang -> scala-library。
我的问题:
- 甚至有可能做到这一点吗?或者是我这里提到的降级到 2.12 的唯一选择
- 为什么“核心”库不遵循外部库的 url 模式,例如:
[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]
. `相反,它看起来像https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.12.15/scala-library-2.12.15.pom