如何根据个人资料在sbt中设置依赖范围?

How to set dependency scope in sbt according to profile?

如何根据不同的环境在build.sbt中设置依赖。例如:

libraryDependencies ++= "org.apache.spark" %% "spark-core" % sparkVersion % "compile", // expected  in dev
libraryDependencies ++= "org.apache.spark" %% "spark-core" % sparkVersion % "provided", // expected in prod

有什么建议吗?

我从来没有尝试过这个,但是根据这个文档:

http://www.scala-sbt.org/1.0/docs/Configuring-Scala.html

好像你设置了

autoScalaLibrary := false

那么您可以使用 "test"、"compile" 或 "runtime"

您可以在系统属性中设置环境标识符,并在 build.sbt 中使用 Scala 匹配来获得所需的结果。

您的 build.sbt 应该如下所示:-

val mode = sys.env.getOrElse("EXEC_MODE", "dev") // can be hardcoded.
val devSparkVersion = 2.0.2
val prodSparkVersion = 1.6.2

mode match {
  case "dev"  => libraryDependencies += "org.apache.spark" %% "spark-core" % devSparkVersion
  case "prod" => libraryDependencies += "org.apache.spark" %% "spark-core" % prodSparkVersion
}