Мои проекты все еще используют sbt 0.7.7, и мне очень удобно иметь служебные классы, которые я могу запускать из приглашения sbt. Я также могу комбинировать это со свойствами, которые поддерживаются отдельно - обычно для значений, связанных со средой, которые меняются от хостов к хостам. Это пример определения моего проекта в каталоге project / build
:
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.
Я прочитал новую документацию по sbt 0.11 на https://github.com/harrah/xsbt/wiki , включая разделы Задачи и TaskInputs ] и, честно говоря, я все еще не понимаю, как добиться того, что я сделал на 0.7.7.
Похоже, что дополнительные свойства можно просто заменить отдельным environment.sbt
, эти задачи должны быть определены в project / build.scala
, прежде чем они будут установлены в build. .sbt
. Также, похоже, есть поддержка завершения, что выглядит очень интересно.
Кроме того, я несколько ошеломлен. Как мне выполнить то, что я сделал с новым sbt?