如何在 sbt 中添加自定义命令?
How to add a custom command in sbt?
我正在尝试向我的 sbt 添加一个新命令。
在我的 build.sbt
我有
lazy val root = (project in file(".")).settings(mySuperDuperCommand)
在兄弟文件中mySuperDuperCommands.sbt
我有
lazy val mySuperDuperTaskKey = TaskKey[Unit]("mySuperDuperCommand")
lazy val mySuperDuperCommand := { ... do *amazing* stuff ... }
它给我 build.sbt
里面的错误 cannot resolve symbol "mySuperDuperCommand"
。如何解决这个难题?
如果您喜欢使用单个构建文件,那么在您的 build.sbt
中,您可以执行以下操作:
lazy val mySuperDuperTask = TaskKey[Unit]("mySuperDuperCommand")
lazy val root = (project in file(".")).settings(mySuperDuperTask:= { ... })
当然是将 ...
替换为您自己的任务实现。
或者,如果您喜欢使用两个不同的文件,您可以这样做:
在project/Build.scala
中您可以定义您的任务。例如:
import sbt._
import Keys._
object ProjectBuild {
lazy val mySuperDuperTask = TaskKey[Unit]("mySuperDuperCommand", "Prints hello.")
def buildSettings = Seq(mySuperDuperTask:={println("Hello")})
}
然后,在你的 build.sbt
你可以写:
import ProjectBuild._
lazy val root = (project in file(".")).settings(ProjectBuild.buildSettings : _*)
然后你可以调用你自己的 sbt mySuperDuperCommand
.
希望对您有所帮助!
你的线路
lazy val mySuperDuperCommand := { ... do *amazing* stuff ... }
错了。 :=
是一个创建 SettingDefinition 的函数。将行更改为
lazy val mySuperDuperCommand: Def.SettingsDefinition = {
mySuperDuperTaskKey := { ... do *amazing* stuff ... }
}
它应该可以工作。
我正在尝试向我的 sbt 添加一个新命令。
在我的 build.sbt
我有
lazy val root = (project in file(".")).settings(mySuperDuperCommand)
在兄弟文件中mySuperDuperCommands.sbt
我有
lazy val mySuperDuperTaskKey = TaskKey[Unit]("mySuperDuperCommand")
lazy val mySuperDuperCommand := { ... do *amazing* stuff ... }
它给我 build.sbt
里面的错误 cannot resolve symbol "mySuperDuperCommand"
。如何解决这个难题?
如果您喜欢使用单个构建文件,那么在您的 build.sbt
中,您可以执行以下操作:
lazy val mySuperDuperTask = TaskKey[Unit]("mySuperDuperCommand")
lazy val root = (project in file(".")).settings(mySuperDuperTask:= { ... })
当然是将 ...
替换为您自己的任务实现。
或者,如果您喜欢使用两个不同的文件,您可以这样做:
在project/Build.scala
中您可以定义您的任务。例如:
import sbt._
import Keys._
object ProjectBuild {
lazy val mySuperDuperTask = TaskKey[Unit]("mySuperDuperCommand", "Prints hello.")
def buildSettings = Seq(mySuperDuperTask:={println("Hello")})
}
然后,在你的 build.sbt
你可以写:
import ProjectBuild._
lazy val root = (project in file(".")).settings(ProjectBuild.buildSettings : _*)
然后你可以调用你自己的 sbt mySuperDuperCommand
.
希望对您有所帮助!
你的线路
lazy val mySuperDuperCommand := { ... do *amazing* stuff ... }
错了。 :=
是一个创建 SettingDefinition 的函数。将行更改为
lazy val mySuperDuperCommand: Def.SettingsDefinition = {
mySuperDuperTaskKey := { ... do *amazing* stuff ... }
}
它应该可以工作。