scala - SBT 任务将 package-src 创建的 jar 提取到某处

标签 scala sbt

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

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

最佳答案

相关文档页面为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"

希望这有帮助。

关于scala - SBT 任务将 package-src 创建的 jar 提取到某处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994857/

相关文章:

scala - 将 Scala 代码部署到 Spark 时 ClassNotFoundException anonfun

sbt - 安装 sbt 失败 : "Server access Error: java.security.cert.CertificateException:"

swing - NoClassDefFoundError 与 sbt 和 scala.swing

scala - 你如何在 sbt 中链接 spark 和 kafka?

具有多个领域的SBT凭证文件

scala - 了解 Play 使用的是哪个 Akka 版本

scala - 与断言相比,scala 中的假设有何含义?

scala - 如何将 java.util.Collections.unmodifiableMap 转换为不可变的 Scala Map?

scala - Intellij Idea无法识别Scala类中的可变字段,出现 'Reassignment to val'错误

arrays - 如何在scala中迭代json数组