2014-12-14 3 views
10

URL에서 zip 파일 (내 데이터베이스)을 다운로드하고 특정 폴더 (예 : 리소스)에 압축을 풀고 싶습니다. 나는 내 프로젝트 빌드 sbt 파일에서 그것을하고 싶다. 그 작업을 수행하는 적절한 방법은 무엇입니까? sbt.IO에서 압축을 풀어 다운로드했습니다. 나는 다운로드를 사용하는 좋은 예를 발견하지 못했다. 나를 위해이 작업을 수행 할 sbt 플러그인이 있습니까?URL에서 zip을 다운로드하고 SBT를 사용하여 리소스에서 추출하십시오.

답변

10

다운로드하고 추출 할 때 명확하지 않으므로 TaskKey으로 해 보겠습니다. 이미 path가

이 작업을 수정할 수 있습니다

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")) 
} 
한 번만 실행이 방금 SBT 우편을 다운로드하여 임시 폴더에 압축을 해제합니다 downloadFromZip라는 SBT 콘솔에서 실행할 수있는 작업을 만듭니다

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.scala 또는 프로젝트 설정) build.sbt이 줄을 추가 : 존재한다.

compile in Compile <<= (compile in Compile).dependsOn(downloadFromZip) 
+0

감사합니다. 필요한 것을하고 있습니다. 컴파일 할 때이 작업을 실행할 수 있습니까? 파일 폴더가 없으면 다운로드 압축을 풀고 존재하는 경우 작업을 실행하지 않습니까? – Omid

+0

@ 오밋입니다. 내 편집을 참조하십시오. –

관련 문제