sbt有内置的buld步骤可与Ant或类似的插件项目相媲美吗?

时间:2013-11-02 23:55:25

标签: sbt

我承认我希望sbt能够内置与ant类似的一般任务集

看似基本的任务,例如简单地copy单个任意文件的能力似乎不存在于sbt中(或他们和我错过了它)?

我最好选择使用community ant plugin吗?这似乎有点忽略了使用sbt:)

或者,是否有社区努力或本地创建许多这些实用程序类型的任务?

(我正在使用sbt 0.13。)

1 个答案:

答案 0 :(得分:4)

如果你是来自Ant,对你来说可能会有点震惊,但如果你保持耐心,我相信你真的很喜欢它。

与通过拼凑任务来实现事物的Ant不同,使用sbt可以创建设置和任务之间的依赖关系,而任务只是Scala代码。因此,如果您可以在Scala中执行此操作,那么您也应该能够在sbt中执行此操作。

对于复制文件等基本任务,请参阅sbt.IO对象和sbt.PathFinder类,File可以隐式转换为。这是一个复制一个文件的例子。

val someFileTask = taskKey[File]("describe it.")

someFileTask := {
  val src: File = baseDirectory.value / "data.txt"
  val out: File = baseDirectory.value / "data2.txt"
  IO.copyFile(src, out)
  out
}

将上述内容放在build.sbt中,您可以通过在shell中运行someFileTask来执行它。