Scala Play依赖性问题

qnyhuwrf  于 2023-08-05  发布在  Scala
关注(0)|答案(1)|浏览(138)

我试图将Scala play应用程序更新到最新的build和sbt版本,但出现以下错误:

[error]     * org.scala-lang.modules:scala-xml_2.12:2.1.0 (early-semver) is selected over {1.2.0, 1.1.1}
[error]         +- org.scala-lang:scala-compiler:2.12.18              (depends on 2.1.0)
[error]         +- com.typesafe.sbt:sbt-native-packager:1.5.2 (scalaVersion=2.12, sbtVersion=1.0) (depends on 1.1.1)
[error]         +- com.typesafe.play:twirl-api_2.12:1.5.1             (depends on 1.2.0)

字符串
这些是我构建的主要组件。sbt

lazy val root = (project in file(".")).enablePlugins(PlayScala)

ThisBuild / scalaVersion := "2.13.11"

libraryDependencies ++= Seq(
  caffeine,
  guice,
  "com.datastax.oss" % "java-driver-core" % "4.15.0",
  "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.15.2",
  "org.scalatestplus.play" %% "scalatestplus-play" % "5.1.0" % Test,
  "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5",
  "com.google.api-ads" % "ads-lib" % "5.0.0",
  "com.google.api-ads" % "dfp-axis" % "5.0.0",
  "org.typelevel" %% "cats-core" % "2.9.0",
  "com.github.tototoshi" %% "scala-csv" % "1.3.10",
  "com.github.pathikrit" %% "better-files" % "3.9.2",
  "com.google.cloud" % "google-cloud-storage" % "2.23.0",
  "com.google.apis" % "google-api-services-sheets" % "v4-rev20220927-2.0.0",
  "com.github.junrar" % "junrar" % "7.5.4",
  "com.google.oauth-client" % "google-oauth-client-jetty" % "1.34.1",
  "com.google.api-client" % "google-api-client" % "2.2.0",
  "com.sendgrid" % "sendgrid-java" % "4.9.3",
  "com.google.firebase" % "firebase-admin" % "9.2.0",
  "org.elasticsearch.client" % "elasticsearch-rest-client" % "8.8.2"
)

javaOptions in Universal ++= Seq(
  "-Dpidfile.path=/dev/null"
  // reference a logback config file that has no file appenders
)

excludeDependencies ++= Seq(
  ExclusionRule(organization = "commons-logging")
)


sbt.版本=1.9.2
plugins.sbt
第一个月
所以,它在sbt.version=1.3.8下工作正常,但是当我从另一个使用不同sbt版本(1.5.2)和播放插件版本(2.8.8)的存储库复制一些代码时,我遇到了以下问题:

[error] java.lang.ClassCastException: org.slf4j.helpers.NOPLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext


我在我的MacOS MX处理器上运行这个,Java 1.8。
尝试做一些依赖项覆盖,如下所示,但同样的问题:

dependencyOverrides += "org.scala-lang.modules" %% "scala-parser-combinators" % "2.0.0"


已尝试为日志问题添加一些日志依赖项:

libraryDependencies ++= Seq(
  "ch.qos.logback" % "logback-classic" % "1.2.3",
  "org.slf4j" % "slf4j-api" % "1.7.25"
)


但都没有用。
sbt dependencyTree也未运行,并因冲突错误而失败
将播放插件降低到2.8.8沿着sbt.version=1.3.8,但无需任何额外的覆盖。
任何帮助在这里是appreicated,谢谢!

axkjgtzd

axkjgtzd1#

它是this issue,建议使用以下解决方法:

// project/plugins.sbt
ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always

字符串
基本上:

  • Scala XML破坏了向后兼容性,或者至少认为改变主要版本是合理的
  • 它以一种不会影响 * 大多数 * 用户的方式发生-包括sbt
  • 较新的sbt通过在解决逐出之前检查库是否使用语义版本控制以及依赖项和传递依赖项暗示了哪些不同的版本来防止意外的兼容性问题
  • 新版本中的SBT更新了scala-xml依赖,但许多SBT插件没有
  • 因此,在使用某些sbt插件编译sbt项目(build.sbt的代码和project/的内容,而不是由sbt编译的 * 您的代码 *)时,scala-xml的此检查失败,但它可以手动静音

相关问题