如何向SBT添加环境配置文件

18
在Maven中,您可以使用配置文件(Profile)为不同的环境设置构建配置。例如DEV、QA、UAT、PRODUCTION。
为了支持持续集成,必须有一种方法告诉SBT要运行哪个环境。
如何在SBT中为不同的环境(例如DEV、QA、UAT、PRODUCTION)进行设置?
谢谢。

也许您可以看一下这个链接:https://dev59.com/9XLYa4cB1Zd3GeqPUzbM#16761503? - Ezhik
1个回答

26

您可以通过创建自定义配置来实现此操作。

val ProfileDev = config("dev") extend(Runtime)
val ProfileQA  = config("qa") extend(Runtime)

val root = (project in file(".")).
  configs(ProfileDev, ProfileQA). // add config here!
  settings( 
    name := "helloworld",
    ....
  ).
  settings(inConfig(ProfileDev)(Classpaths.configSettings ++ Defaults.configTasks ++ Defaults.resourceConfigPaths ++ Seq(
    unmanagedResourceDirectories += {baseDirectory.value / "src" / configuration.value.name / "resources"}
  )): _*).
  settings(inConfig(ProfileQA)(Classpaths.configSettings ++ Defaults.configTasks ++ Defaults.resourceConfigPaths ++ Seq(
    unmanagedResourceDirectories += {baseDirectory.value / "src" / configuration.value.name / "resources"}
  )): _*)

然后,您需要将配置文件放置在 src/dev/resourcessrc/qa/resources 中,并且当您输入 dev:rundev:package 时,它应该是您类路径的一部分。以下是一个快速测试:

object Main extends App {
  println(xml.XML.load(this.getClass.getResource("/config.xml")))
}

1
我已将此添加到我的Build.scala文件中,但在运行例如dev:package时,我只得到“没有这样的设置/任务”。有什么建议吗? - Daniel
什么是 Build.scala?执行 show ivyConfigurations 命令来查看一个项目中的配置。我敢打赌你没有添加 dev 配置或者没有执行 inConfig 命令。 - Jacek Laskowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接