SBTコマンド内の設定を変更するにはどうすればいいですか? 質問する

SBTコマンド内の設定を変更するにはどうすればいいですか? 質問する

変更された設定でタスクpublish-snapshotを実行するコマンドが必要です(その設定はコマンドの実行時に計算されます)。publishversion

inside コマンドの現在の値を取得する方法がわかりましたversion。これはタスクProject.runTask("task", "scope", ...)を呼び出すための正しい呼び出しのようですpublish

State私が混乱しているのは、インスタンスを新しいバージョン値で変更する方法だけです。私が試したすべてのことは、元のバージョン設定に何も影響を与えないようです。

私の最後の試み:

val printVers = TaskKey[Unit]("printvers")
val printVersTask = TaskKey[Unit]("printvers") <<= {version map println}

def publishSnapshot = Command.command("publish-snapshot") { state =>
  val newState = SessionSettings.reapply(state.get(sessionSettings).get.appendRaw(version := "???"), state)
  Project.runTask(printVers in Compile, newState, true)

  state
}

lazy val root = Project("main", file("."),
                        settings =
                          Defaults.defaultSettings ++
                          Seq(printVersTask)).settings(commands += publishSnapshot)

この動作を修正する方法はありますか?

ベストアンサー1

sbtメーリングリストの助けを借りて、次のようなソリューションを作成することができました。

def publishSnapshot = Command.command("publish-snapshot") { state =>
  val extracted = Project extract state
  import extracted._
  val eVersion = getOpt(version).get // getting current version
  runTask(publish in Compile,
    append(Seq(version := "newVersion"), state),
    true
  )
  state
}

おすすめ記事