我想创建一个依赖于另一个任务的任务,将jar文件作为输出(例如package-src),然后在某处提取生成的jar?
注意:我对用于执行提取的库/方法不感兴趣,只是我如何定义调用这样的库或方法的任务。
答案 0 :(得分:3)
相关文档页面为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"
希望这有帮助。