Scala 从url下载一个zip,并使用SBT在资源中提取它

Scala 从url下载一个zip,并使用SBT在资源中提取它,scala,sbt,Scala,Sbt,我想从URL下载一个zip文件(我的数据库),并将其解压缩到特定文件夹(例如资源)。我想在我的项目构建sbt文件中这样做。 这样做的适当方式是什么? 我知道sbt.IO已经解压并下载了。我找不到一个使用下载的好例子(我发现那些不起作用)。 有没有sbt插件可以帮我完成这项工作?不清楚您何时需要下载和解压缩,因此我将使用任务键来完成这项工作。这将创建一个任务,您可以从sbt控制台运行,该任务名为downloadFromZip,它只需下载sbt zip并将其解压缩到临时文件夹: lazy val d

我想从URL下载一个zip文件(我的数据库),并将其解压缩到特定文件夹(例如资源)。我想在我的项目构建sbt文件中这样做。 这样做的适当方式是什么? 我知道sbt.IO已经解压并下载了。我找不到一个使用下载的好例子(我发现那些不起作用)。
有没有sbt插件可以帮我完成这项工作?

不清楚您何时需要下载和解压缩,因此我将使用
任务键来完成这项工作。这将创建一个任务,您可以从sbt控制台运行,该任务名为
downloadFromZip
,它只需下载sbt zip并将其解压缩到临时文件夹:

lazy val downloadFromZip = taskKey[Unit]("Download the sbt zip and extract it to ./temp")

downloadFromZip := {
    IO.unzipURL(new URL("https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.zip"), new File("temp"))
}
如果路径已存在,则此任务只能运行一次:

downloadFromZip := {
    if(java.nio.file.Files.notExists(new File("temp").toPath())) {
        println("Path does not exist, downloading...")
        IO.unzipURL(new URL("https://dl.bintray.com/sbt/native-packages/sbt/0.13.7/sbt-0.13.7.zip"), new File("temp"))
    } else {
        println("Path exists, no need to download.")
    }
}
要在编译时运行它,请将此行添加到
build.sbt
(或
build.scala
中的项目设置)


在编译中编译非常感谢,它正在做我需要的事情,是否可以在编译时运行此任务?如果文件夹不存在,则下载解压缩,如果存在,则不运行任务?这可能会促使创建一个插件(如果不存在),以处理整个过程:校验和、下载、解压缩。
compile in Compile <<= (compile in Compile).dependsOn(downloadFromZip)