在SBT中复制特定文件

时间:2016-06-28 05:24:25

标签: scala sbt

如何创建一个sbt任务来将特定文件(或文件模式)复制到特定目录?

(例如,要将client/target/foobar.js复制到dist/js,将server/target/web/public/*.*复制到dist/assets)。

我不想编写插件来实现这一点,但使用现有的插件是可以的。

1 个答案:

答案 0 :(得分:2)

如果您真的希望它是一项单独的任务,您可以从Defaults.scala中的copyResourcesTask开始:

  def copyResourcesTask =
    (classDirectory, resources, resourceDirectories, streams) map { (target, resrcs, dirs, s) =>
      val cacheFile = s.cacheDirectory / "copy-resources"
      val mappings = (resrcs --- dirs) pair (rebase(dirs, target) | flat(target))
      s.log.debug("Copy resource mappings: " + mappings.mkString("\n\t", "\n\t", ""))
      Sync(cacheFile)(mappings)
      mappings
    }

并修改它(只需将mappings更改为您想要的,以及您所依赖的任务)。或者,修改现有任务中的映射。请参阅文档中的Mapping Files