【发布时间】:2016-10-12 14:20:03
【问题描述】:
如何为多项目配置指定自定义暂存目录?我正在使用sbt-native-packager
下面是我的多模块配置草图。当我暂存这个项目(sbt stage)时,文件被写入
common/target/universal/stage
app1/target/universal/stage
app2/target/universal/stage
我想像这样传递一个环境变量stageSuffix:sbt stage -DstageSuffix=XYZ。此变量应使其将项目暂存到以下目录:
common/target/universal/stage-XYZ
app1/target/universal/stage-XYZ
app2/target/universal/stage-XYZ
我尝试在commonSettings 中修改stagingDirectory,但效果不佳,我收到类似“对未定义设置的引用”之类的错误。
我怎样才能做到这一点?
val stageSuffix = sys.props.getOrElse("stageSuffix", ".")
val commonSettings = Seq(
stagingDirectory := stagingDirectory.value / stageSuffix, // this makes it fail
libraryDependencies ++= Seq(...))
val common = project.in(file("common"))
.enablePlugins(JavaAppPackaging)
.settings(commonSettings: _*)
val app1 = project.in(file("app1"))
.enablePlugins(JavaAppPackaging)
.settings(mainClass in Compile := Some("app1.Main"))
.dependsOn(common)
.settings(commonSettings: _*)
.settings(libraryDependencies ++= Seq(...))
val app2 = project.in(file("app2"))
.enablePlugins(JavaAppPackaging)
.settings(mainClass in Compile := Some("app2.Main"))
.dependsOn(common)
.settings(commonSettings: _*)
.settings(libraryDependencies ++= Seq(...))
val main = project.in(file("."))
.dependsOn(common, app1, app2)
.aggregate(common, app1, app2)
.settings(commonSettings: _*)
【问题讨论】:
-
在引用
stagingDirectory时出现“对未定义设置的引用”设置错误吗?了解哪些设置特别有问题会有所帮助。 -
是的,删除该设置将使构建通过,但在标准暂存位置:
target/universal/stage
标签: scala sbt sbt-native-packager