2013-02-21 2 views
2

jar 파일을 출력 (예 : package-src)과 함께 다른 작업에 종속시키는 작업을 만들고 싶습니다. 그러면 결과 jar가 어딘가에 추출됩니까?어딘가에 package-src에서 생성 된 jar 파일을 추출하는 SBT 작업

참고 : 나는 추출을 수행하는 데 사용 된 라이브러리/메소드에 관심이 없으며 그런 라이브러리 또는 메소드를 호출하는 태스크를 정의하는 방법 만 관심이 있습니다.

답변

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" 

희망을.

+0

고마워, 내가 집에 갈 때 이것을 시험해 보겠다. 간단한 질문이지만 튜플의 스트림 키는 무엇입니까? 또한 packageSrc TaskKey에서 map 함수를 직접 호출하는 것이 가능하기 때문에 packageSrc가 필요합니다. – pgraham

+0

nm 두번째 질문, 나는 매뉴얼을보고 내가 할 수있는 것을 보았습니다 :) – pgraham

+1

'streams' 키는 그냥 로깅을위한 것입니다; 그것은 함수 블록 내에서'out '이라고 불리우며'out.log.info', 즉 INFO 레벨에서 로깅에만 사용됩니다. 원래의 질문과 reeeeally 관련이 아니에요. 나는 단지 다른 일반적인 것들에 연결하는 방법을 보여주기 위해 그것을 포함시킬 것이라고 생각했습니다. :) –

관련 문제