如何在Build.scala中定义SBT发布任务?

如何在Build.scala中定义SBT发布任务?,sbt,sbt-release,Sbt,Sbt Release,我正在build.sbt中定义我的构建/发布过程。我还有一个project/Build.scala,它有一些在Build.sbt中使用的定义。这样做是为了保持build.sbt的可读性 我正在尝试向releaseProcess添加一些新任务。我在Build.scala中将这些任务定义为 object StartService { val myNewTask = taskKey[Unit]("Execute a CLI command") myNewTask := { stream

我正在build.sbt中定义我的构建/发布过程。我还有一个project/Build.scala,它有一些在Build.sbt中使用的定义。这样做是为了保持build.sbt的可读性

我正在尝试向releaseProcess添加一些新任务。我在Build.scala中将这些任务定义为

object StartService {
  val myNewTask = taskKey[Unit]("Execute a CLI command")
  myNewTask := {
    streams.value.log.info(s"Executing command")
    s"cmd $arg1 $arg2" !
  }
}
build.sbt具有

releaseProcess := Seq[ReleaseStep](
...
  releaseStepTask(StartService.myNewTask)
...
)
在执行release命令时,我不断得到一个异常,myNewTask未定义。导入Build.scala中定义的任务的正确方法是什么

java.lang.RuntimeException:/:myNewTask未定义。 在scala.sys.package$.error处(package.scala:27) 在sbt.Extracted$$anonfun$getOrError$1.apply(Extracted.scala:94) 在sbt.Extracted$$anonfun$getOrError$1.apply(Extracted.scala:94) 在scala.Option.getOrElse(Option.scala:120)


您需要将任务定义添加到项目中。仅仅是在一个物体中,这是不会发生的。最简单的方法是将设置直接添加到build.sbt中

要自动将其添加到多个项目中,您可以将其定义为项目目录中的插件:

object SbtScaryPlugin extends AutoPlugin {

  override def trigger = allRequirements
  override def requires = JvmPlugin

  object autoImport {
    val myNewTask = taskKey[Unit]("Execute a CLI command")
  }

  import autoImport._

  override lazy val projectSettings = Seq(
    myNewTask := {
      streams.value.log.info(s"Executing command")
      s"cmd $arg1 $arg2" !
    }
  )
}

您需要将任务定义添加到项目中。仅仅是在一个物体中,这是不会发生的。最简单的方法是将设置直接添加到build.sbt中

要自动将其添加到多个项目中,您可以将其定义为项目目录中的插件:

object SbtScaryPlugin extends AutoPlugin {

  override def trigger = allRequirements
  override def requires = JvmPlugin

  object autoImport {
    val myNewTask = taskKey[Unit]("Execute a CLI command")
  }

  import autoImport._

  override lazy val projectSettings = Seq(
    myNewTask := {
      streams.value.log.info(s"Executing command")
      s"cmd $arg1 $arg2" !
    }
  )
}

感谢您指向插件。我花了一个周末了解了任务、设置和插件,并提出了一个解决方案。感谢您指向插件。我花了一个周末了解了任务、设置和插件,并提出了一个解决方案。