私はscalaにかなり慣れていません。マルチモジュール プロジェクトを Scala 2.13 にアップグレードしているclass not found
ときに、実行時に例外をスローする Scala 2.12 でコンパイルされたこの依存関係を見つけました。
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