我想创建一个依赖于另一个任务的任务,并将 jar 文件作为输出(例如 package-src),然后将生成的 jar 提取到某处?
注意:我对用于执行提取的库/方法不感兴趣,只对如何定义调用此类库或方法的任务感兴趣。
相关文档页面是Tasks和TaskInputs。对于解压缩,您可以使用sbt.IO.unzip(...)
.
首先,我们需要定义任务的键(在.scala
构建定义中)。该任务将返回一组解压缩文件。
val unzipPackage = TaskKey[Set[File]]("unzip-package", "unzips the JAR generated by package-src")
然后,我们添加这样的设置:
unzipPackage <<= (packageSrc, target in unzipPackage, streams) map { (zipFile, dir, out) =>
IO createDirectory dir
val unzippedFiles = IO unzip (zipFile, dir, AllPassFilter)
out.log.info("Unzipped %d files of %s to %s" format (unzippedFiles size, zipFile, dir))
unzippedFiles
}
这让我们也将输出目录定义为一个设置:
target in unzipPackage <<= target / "unzippedPackage"
希望这可以帮助。