Как преобразовать sbt 0.12 "<< = map case" в sbt 1.x - PullRequest
0 голосов
/ 18 июня 2020

sbt 0.12 build.sbt

val myTask = TaskKey[Unit]("mytask")
lazy val baseSettings = Seq(
    javacOptions ++= Seq("-g", "-encoding", "utf8")
)
lazy val appSettings = baseSettings ++ Seq(
  myTask <<= (fullClasspath in Runtime, normalizedName, target, packageOptions, streams, cacheDirectory) map {
    case (fullClasspath: Classpath, normalizedName: String, target: File, packageOptions: Seq[PackageOption], streams: TaskStreams, cacheDirectory: File) => {
      streams.log.info("my task appSettings")
    }
  }
)

Хотите обновить следующий код до sbt 1.x

myTask <<= (fullClasspath in Runtime, normalizedName, target, packageOptions, streams, cacheDirectory) map {
    case (fullClasspath: Classpath, normalizedName: String, target: File, packageOptions: Seq[PackageOption], streams: TaskStreams, cacheDirectory: File) => {

Спасибо

Update:
I find some information at scala-sbt.org/0.13/docs/Migrating-from-sbt-012x.html, but I don't know how to use ":=" with "case"
EDIT:
Mateusz Kubuszok is right, not need "case", and "cacheDirectory" can be replaced by "streams.value.cacheDirectory"

1 Ответ

1 голос
/ 18 июня 2020

Вместо <<= вы используете :=.

Вместо кортежа настроек и map вы просто вызываете .value для ключа / settings.

cacheDirectory был удален.

Начиная с версии 1.1 существует также синтаксис унифицированного пути

lazy val appSettings = Seq(
  myTask := {
    streams.value.log.info(s"my task appSettings: ${(Runtime / fullClasspath).value}, ${normalizedName.value}, ${target.value}, ${packageOptions.value}")
  }
)

В более сложных задачах вам может потребоваться обратиться к документации, например, о порядке исполнение .

...