我正在尝试向我的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 ... }
它在cannot resolve symbol "mySuperDuperCommand"
内给出了错误build.sbt
。如何解决这个问题?
答案 0 :(得分:2)
如果您希望使用单个构建文件,请在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
。
希望它有所帮助!
答案 1 :(得分:1)
你的行
lazy val mySuperDuperCommand := { ... do *amazing* stuff ... }
错了。 :=
是一个创建SettingDefinition的函数。将行更改为
lazy val mySuperDuperCommand: Def.SettingsDefinition = {
mySuperDuperTaskKey := { ... do *amazing* stuff ... }
}
它应该有用。