在构建build.sbt
文件时,请说我有两个主要对象:
object A {
def main(args: Array[String]) = { println("I'm A!") }
}
object B {
def main(args: Array[String]) = { println("I'm B!") }
}
我想在设置环境变量B
时调用RUN_B
,否则只运行默认值A
。两个问题:
答案 0 :(得分:1)
我使用以下代码做了类似的事情
lazy val stage = sys.props.getOrElse("stage", default = "dev")
lazy val selectedMain = stage match {
case "dev" => Some("A")
case _ => Some("B")
}
mainClass in (Compile, run) := selectedMain
你需要设置sbt -Dstage = production然后sbt run来踢主A或主B.
答案 1 :(得分:0)
您可以使用mainClass任务中的Scala代码直接读取环境变量。
mainClass in run := {
Option(System.getenv("RUN_B")) match {
case Some(_) => Some("com.myproject.main.B")
case None => Some("com.myproject.main.A")
}
}
您可以检查设置以查看是否一切正常:
> show run::mainClass
[info] Some(com.myproject.main.A)