2

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

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

4

1 回答 1

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"

希望这可以帮助。

于 2013-02-21T06:37:31.697 回答