出力として jar ファイル (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"
お役に立てれば。