2013-06-19 133 views
17

在Maven中,您可以擁有配置文件,它可以爲不同的環境設置配置配置。例如DEV,QA,UAT,PRODUCTION如何將環境配置文件配置添加到SBT

爲了支持持續集成,必須有一種方法可以告訴SBT運行哪個環境。

如何設置SBT中的不同環境。例如DEV,QA,UAT,生產?

謝謝

+0

也許http://stackoverflow.com/questions/16600119/with-sbt-how-do-ia-specify-an-alternate-project-root-other-than-the-目前二/ 16761503#16761503? – Ezhik

回答

20

您可以通過創建自定義配置來完成此操作。

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它應該是你的classpath的一部分。這裏有一個快速測試:

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

我已將此添加到我的Build.scala,但在運行時dev:包我剛剛收到「沒有這樣的設置/任務」。有什麼建議? – Daniel

+0

什麼是Build.scala?執行'show ivyConfigurations'來查看項目中的配置。我敢打賭,你沒有添加'dev' config,或者沒有執行'inConfig'。 –