如何在Scala 3中使用Lagom?依赖下载失败报错怎么解决?
问题根因
Lagom 1.6.x 系列官方仅发布了适配 Scala 2.12、Scala 2.13 的构建包,没有原生支持 Scala 3 的版本。你仅对 service-api 模块的 Lagom 依赖配置了 CrossVersion.for3Use2_13 跨版本规则,项目其他模块(比如服务实现模块)依赖的 lagomScaladslServer 等组件未配置对应规则,sbt 会默认拉取适配 Scala 3 的包,因此触发依赖不存在的报错。
解决方案
- 统一为所有 Lagom 依赖配置跨版本规则
所有用到 Lagom 相关依赖的模块,都需要给对应的依赖添加.cross(CrossVersion.for3Use2_13)配置,示例完整配置如下:
// service-api 模块配置 lazy val `service-api` = (project in file("service-api")) .settings( libraryDependencies ++= Seq( lagomScaladslApi ).map(_.cross(CrossVersion.for3Use2_13)) ) // service-impl 等其他用到 Lagom 依赖的模块配置 lazy val `service-impl` = (project in file("service-impl")) .enablePlugins(LagomScala) .settings( libraryDependencies ++= Seq( lagomScaladslServer, // 其他你用到的 Lagom 相关依赖,比如持久化、测试组件等 lagomScaladslPersistenceCassandra, lagomScaladslTestKit ).map(_.cross(CrossVersion.for3Use2_13)) ) .dependsOn(`service-api`)
- 前置依赖检查
- 确保 sbt 版本 >= 1.5.0,低版本 sbt 对 Scala 3 兼容 Scala 2.13 依赖的支持存在缺陷
- 若存在其他 Scala 版本相关的依赖冲突,可在 build.sbt 顶部添加全局版本兼容规则:
ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
- 可选升级方案
如果对新特性有需求,可以升级到适配 Scala 3 的 Lagom 更高版本,避免跨版本兼容配置。
内容的提问来源于stack exchange,提问作者wangzi
相关产品推荐
相关产品推荐

