我想创建一个依赖于另一个任务并以 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"
希望这有帮助。
关于scala - SBT 任务将 package-src 创建的 jar 提取到某处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994857/