如何找到zip依赖路径?

时间:2013-09-04 09:24:57

标签: sbt sbt-native-packager

在我的SBT构建中,我正在获取一个zip依赖项(之前使用sbt-native-packager插件构建),使用bundle分类器在我当地的Ivy仓库中发布。

但我需要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依赖... 我做错了什么?

我正在使用sbt 0.13。

1 个答案:

答案 0 :(得分:2)

默认情况下,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上的文档。