2

sbt-s3uberjar アーティファクトをデプロイのために 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

考えられる解決策の 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 に答える