8
我的项目仍在使用sbt 0.7.7,我发现可以从sbt提示符运行的实用程序类非常方便。我还可以将它与单独维护的属性相结合 - 通常用于从主机到主机的环境相关值。这是我的项目定义的一个例子project/build
目录下:sbt 0.11需要运行任务示例
class MyProject(info: ProjectInfo) extends DefaultProject(info) {
//...
lazy val extraProps = new BasicEnvironment {
// use the project's Logger for any properties-related logging
def log = MyProject.this.log
def envBackingPath = path("paths.properties")
// define some properties that will go in paths.properties
lazy val inputFile = property[String]
}
lazy val myTask = task { args =>
runTask(Some("foo.bar.MyTask"),
runClasspath, extraProps.inputFile.value :: args.toList).dependsOn(compile)
describedAs "my-task [options]"
}
}
我就可以使用我的任务,因为my-task option1 option2
的SBT shell下。
我读过的https://github.com/harrah/xsbt/wiki新的SBT 0.11文档包括Tasks和TaskInputs坦率地说,我仍然对如何完成我做了0.7.7挣扎的章节。
看起来额外的属性可以简单地替换为单独的environment.sbt
,那么这些任务必须在project/build.scala
中定义,然后才能设置为build.sbt
。它看起来也有完成支持,看起来非常有趣。
除此之外,我有点不知所措。我怎样才能完成我对新手做的事情?
我想帮助,但我不记得SBT 0.7.7细节。我想知道这个问题是否可以分解为多个关于sbt 0.11的自包含问题? –
@KiptonBarros,当然,我们从基本的'runTask'开始,我可以在sbt shell中为其提供参数。 – huynhjl
看来sbt的文档目前正在修改。我认为[输入任务](https://github.com/harrah/xsbt/wiki/Input-Tasks)wiki页面上的“基本输入任务定义”部分就是您要查找的内容。 –