Как найти путь зависимости zip?

В моей сборке SBT я извлекаю zip-зависимость (ранее созданную с помощью плагина sbt-native-packager), опубликованную в моем локальном репозитории Ivy с классификатором bundle.

Но мне нужен путь зависимостей в репозитории Ivy, чтобы распаковать его (с IO.unzip), поместить в него несколько файлов и переупаковать с помощью sbt-native-packager.

Я использую метод artifacts(...), чтобы найти артефакт и добавить его как зависимость:

"foo" % "bar" % "1.0-SNAPSHOT" artifacts(Artifact("bar-bundle", "zip", "zip", "bundle"))

Но после этого я немного потерялся...

Я попытался отфильтровать dependencyClasspath, чтобы найти его:

val bundleFile = taskKey[File]("bundle's path")

val settings = Seq(bundleFile <<= dependencyClasspath map { _ filter (_.endsWith(".zip"))})

Проблема в том, что я не могу найти zip-зависимость ни в одном пути к классам... Что я делаю неправильно?

Я использую сбт 0.13.


person Pierre DAL-PRA    schedule 04.09.2013    source источник


Ответы (1)


Zip-файлы по умолчанию не находятся в пути к классам. Типы включенных артефактов настраиваются classpathTypes. Вы можете добавить к нему «zip» с помощью:

classpathTypes += "zip"

Затем он появится dependencyClasspath.

Однако, если на самом деле он не должен идти по пути к классам, вы можете вытащить его напрямую из отчета об обновлении.

bundleFile := {
   val report: UpdateReport = update.value
   val filter = artifactFilter(name = "bar-bundle", extension = "zip")
   val all: Seq[File] = report.matching(filter)
   all.headOption getOrElse error("Could not find bar-bundle")
}

Подробнее см. в документации по UpdateReport. .

person Mark Harrah    schedule 19.09.2013