我正在尝试使用auto-migration plugin将Play Framework (2.8.8)项目从Scala2.13更新到Scala3。
出现问题的依赖项没有在build.sbt中明确列出,而是(据我所知)从"com.typesafe.play" % "sbt-plugin" % "2.8.8"中解决的依赖项
[info] com.typesafe.play:twirl-api:1.5.1 -> "com.typesafe.play" % "twirl-api_2.13" % "1.5.1"
[info] com.typesafe.play:play-docs:2.8.8:docs -> "com.typesafe.play" % "play-docs_2.13" % "2.8.8" % "docs"
[info] com.typesafe.play:play-logback:2.8.8 -> "com.typesafe.play" % "play-logback_2.13" % "2.8.8"
[info] com.typesafe.play:play-test:2.8.8:test -> "com.typesafe.play" % "play-test_2.13" % "2.8.8" % "test"
[info] com.typesafe.play:filters-helpers:2.8.8 -> "com.typesafe.play" % "filters-helpers_2.13" % "2.8.8"
[info] com.typesafe.play:play-server:2.8.8 -> "com.typesafe.play" % "play-server_2.13" % "2.8.8"
[info] com.typesafe.play:play-akka-http-server:2.8.8 -> "com.typesafe.play" % "play-akka-http-server_2.13" % "2.8.8"看起来sbt-plugin只针对SBT1.x和Scala2.12 (ie here)发布,但是所有列出的不兼容版本(见上)已经有了2.13版本,这已经可以使用Scala3 CrossVersion.for3Use2_13标志了。
有没有办法绕过它(重写依赖关系?)还是要等到2.13版本的sbt-plugin发布?
发布于 2021-05-16 22:25:24
我认为您混淆了两个独立的问题:用于构建sbt构建的Scala版本和用于构建程序的Scala版本。对于前者,您必须使用Scala 2.12。对于后者,您可以使用任何您想要的东西,包括3.0.0。这两个不一定要匹配。
发布于 2021-08-31 16:45:38
从2021年8月起,Play Framework不支持Scala 3。Play依赖于许多其他库,但并不是所有的库都支持Scala3。
因此,即使您正确配置了sbt,根据Matthias的回答,显然您仍然不能使用Scala 3。
这是Play Framework论坛上关于Scala 3的讨论帖子:
https://discuss.lightbend.com/t/scala-3-0-support/7729/10
...这不像简单地让Play本身在Scala3中工作那么简单。Play依赖于各种其他项目和库
发布于 2021-10-16 22:45:56
我在我的build.sbt中包含了类似这样的东西,这样我就可以使用3.0构建我的项目,并且仍然依赖于只能使用2.13提供的库
val scala3Version = "3.0.2"
val libVersion = "0.0.1"
lazy val projectName = project
.in(file("exampleproject"))
.settings(
...,
libraryDependencies ++= Seq(
...,
"com.example.lib" %% "lib-name" % libVersion,
).map(_.cross(CrossVersion.for3Use2_13))
)他们的文档发生了很大变化,但现在相对稳定了:Scala 3 Migration Guide Doc
https://stackoverflow.com/questions/67556716
复制相似问题