2

sbt-s3用来将我的 uberjar 工件上传到 S3 进行部署。我现在需要的是让开发人员能够选择他们是推动登台还是生产。

sbt-s3看起来像这样,

  mappings in upload <<= (name, version, scalaBinaryVersion) map { (name, version, scalaBinaryVersion) =>
    Seq(new java.io.File("target/scala-%s/%s.jar" format(scalaBinaryVersion, name)) -> ("%s.jar" format name)) }

假设我想使用类似或取决于用户如何调用 SBT%s.jar的字符串作为前缀(让他们每次想要推送时都进行编辑似乎很愚蠢)。例如:进入暂存阶段和或将进入生产阶段。"staging""production"Build.scalasbt s3Uploadsbt production:s3Uploadsbt production s3Upload

我无法理解范围以及如何使用它们来解决这个问题。我不能只做一个设置和硬核S3Prefix in Production,因为那样他们就不能推动演出。我也没有任何运气来完成一项覆盖以下任务production的默认值的任务。"staging""production"

想法?

4

1 回答 1

1

一种可能的解决方案可能是为此使用输入任务,这是来自sbt 文档的简单任务定义:

  demo := {
  // get the result of parsing
  val args: Seq[String] = spaceDelimited("<arg>").parsed
  // Here, we also use the value of the `scalaVersion` setting
  println("The current Scala version is " + scalaVersion.value)
  println("The arguments to demo were:")
  args foreach println
}

然后,您可以根据论点进行分期或生产。

我认为可以有一个更优雅的配置解决方案,但我以前没有这样做。

于 2013-09-27T11:29:59.820 回答