gpt4 book ai didi

scala - 在 sbt 中,如何与一个版本中不需要的依赖项交叉构建?

转载 作者:行者123 更新时间:2023-12-01 11:21:51 25 4
gpt4 key购买 nike

我需要使用 Scala 2.10 和 2.11(最终也是 2.12)交叉构建一个项目。一些属于 2.10 的包,例如解析器组合器,在 2.11 中独立打包。因此,它们不需要在 2.10 版本中提及,但在 2.11 中需要。此外,可能有多个这样的包,需要使用一个通用版本。

我找到了 documentation re: cross-building on the SBT site在这里有点缺乏帮助。而且,尽管有几个与此主题相关的 StackOverflow 问答,但我找不到解决这一特定问题的问答。

最佳答案

解决方法如下(只显示build.sbt的相关部分):

scalaVersion := "2.10.6"
crossScalaVersions := Seq("2.10.6","2.11.8")

val scalaModules = "org.scala-lang.modules"
val scalaModulesVersion = "1.0.4"

val akkaGroup = "com.typesafe.akka"
lazy val akkaVersion = SettingKey[String]("akkaVersion")
lazy val scalaTestVersion = SettingKey[String]("scalaTestVersion")

akkaVersion := (scalaBinaryVersion.value match {
case "2.10" => "2.3.15"
case "2.11" => "2.4.1"
})
scalaTestVersion := (scalaBinaryVersion.value match {
case "2.10" => "2.2.6"
case "2.11" => "3.0.1"
})

libraryDependencies ++= (scalaBinaryVersion.value match {
case "2.11" => Seq(
scalaModules %% "scala-parser-combinators" % scalaModulesVersion,
scalaModules %% "scala-xml" % scalaModulesVersion,
"com.typesafe.scala-logging" %% "scala-logging" % "3.4.0"
)
case _ => Seq()
}
)

libraryDependencies ++= Seq(
akkaGroup %% "akka-actor" % akkaVersion.value % "test",
"org.scalatest" %% "scalatest" % scalaTestVersion.value % "test"
)

请注意,此解决方案还解决了如何根据二进制版本设置依赖项的版本的问题。我认为这可能会在 Stackoverflow 的其他地方解决,但在这里都在同一个地方。

关于scala - 在 sbt 中,如何与一个版本中不需要的依赖项交叉构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com