2
我想創建一個依賴另一個任務並將jar文件作爲輸出的任務(例如package-src),然後在某處提取生成的jar?SBT任務提取由package-src在某處創建的jar
注意:我對用於執行提取的庫/方法不感興趣,只關心如何定義調用此類庫或方法的任務。
我想創建一個依賴另一個任務並將jar文件作爲輸出的任務(例如package-src),然後在某處提取生成的jar?SBT任務提取由package-src在某處創建的jar
注意:我對用於執行提取的庫/方法不感興趣,只關心如何定義調用此類庫或方法的任務。
相關文件頁面爲Tasks和TaskInputs。爲了解壓縮,你可以使用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"
希望這有助於。
謝謝,當我回家時我會試試這個。只是一個簡單的問題,元組中的流鍵是什麼?另外,如果我真的只需要packageSrc作爲依賴項,可以直接調用packageSrc TaskKey上的map函數嗎? – pgraham 2013-02-21 22:06:55
nm第二個問題,我只是看了看手冊,看到我可以:) – pgraham 2013-02-21 22:17:55
'streams'鍵只是爲了記錄;它在功能塊內部被稱爲「out」,僅用於「out.log.info」,即登錄INFO級別。這與原始問題並不相關。我只是想我會包括它來展示如何連接到其他常用的東西。 :) – 2013-02-21 22:37:57