Scala 3项目引入Scala 2构件:跨版本后缀冲突问题解决咨询
Scala 3 引入未迁移 Scala 2 类库版本冲突解决办法
遇到Modules were resolved with conflicting cross-version suffixes报错,本质是Scala 3与Scala 2类库的版本后缀(如_2.13、_3)不匹配导致的依赖解析冲突,以下是可行的解决方案:
指定Scala 2.13兼容适配
Scala 3原生支持兼容大部分Scala 2.13类库,在引入未迁移的库时,通过CrossVersion.for3Use2_13强制使用其Scala 2.13版本:libraryDependencies += "你的库groupId" %% "你的库artifactId" % "版本号" cross CrossVersion.for3Use2_13强制统一冲突依赖版本
若冲突来自依赖树中的间接依赖,使用sbt的dependencyOverrides强制指定兼容版本:dependencyOverrides += "冲突依赖的groupId" %% "冲突依赖的artifactId" % "兼容版本号" cross CrossVersion.for3Use2_13启用迁移编译选项
针对部分使用Scala 2语法的库,添加Scala 3迁移编译选项提升兼容性:scalacOptions += "-Xsource:3-migration"排除冲突子依赖
如果冲突是由目标库的某个子依赖导致,可直接排除该子依赖:libraryDependencies += "你的库groupId" %% "你的库artifactId" % "版本号" exclude ("冲突子依赖的groupId", "冲突子依赖的artifactId")
注意:部分使用Scala 2宏或特殊语法特性的库可能无法通过上述方法兼容,这类情况需要等待官方迁移或寻找社区替代方案。
内容的提问来源于stack exchange,提问作者sergeda
相关产品推荐
相关产品推荐

