Необходимые примеры задач запуска sbt 0.11

Мои проекты все еще используют 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?

8
задан huynhjl 11 November 2011 в 18:14
поделиться