如何根据个人资料在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
}
如何根据不同的环境在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
}