在Maven中,您可以使用配置文件(Profile)为不同的环境设置构建配置。例如DEV、QA、UAT、PRODUCTION。
为了支持持续集成,必须有一种方法告诉SBT要运行哪个环境。
如何在SBT中为不同的环境(例如DEV、QA、UAT、PRODUCTION)进行设置?
谢谢。
为了支持持续集成,必须有一种方法告诉SBT要运行哪个环境。
如何在SBT中为不同的环境(例如DEV、QA、UAT、PRODUCTION)进行设置?
谢谢。
您可以通过创建自定义配置来实现此操作。
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/resources
和 src/qa/resources
中,并且当您输入 dev:run
或 dev:package
时,它应该是您类路径的一部分。以下是一个快速测试:
object Main extends App {
println(xml.XML.load(this.getClass.getResource("/config.xml")))
}
Build.scala
?执行 show ivyConfigurations
命令来查看一个项目中的配置。我敢打赌你没有添加 dev
配置或者没有执行 inConfig
命令。 - Jacek Laskowski