SBT任务提取package-src在某处创建的jar

时间:2013-02-21 04:59:18

标签: scala sbt

我想创建一个依赖于另一个任务的任务,将jar文件作为输出(例如package-src),然后在某处提取生成的jar?

注意:我对用于执行提取的库/方法不感兴趣,只是我如何定义调用这样的库或方法的任务。

1 个答案:

答案 0 :(得分:3)

相关文档页面为TasksTaskInputs。要解压缩,您可以使用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"

希望这有帮助。