如何创建一个sbt任务来将特定文件(或文件模式)复制到特定目录?
(例如,要将client/target/foobar.js
复制到dist/js
,将server/target/web/public/*.*
复制到dist/assets
)。
我不想编写插件来实现这一点,但使用现有的插件是可以的。
答案 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。