如何找到一个 zip 依赖路径?

Posted

技术标签:

【中文标题】如何找到一个 zip 依赖路径?【英文标题】:How to finding a zip dependency path? 【发布时间】:2013-09-07 17:40:12 【问题描述】:

在我的 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】:

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 上的文档。

【讨论】:

以上是关于如何找到一个 zip 依赖路径?的主要内容,如果未能解决你的问题,请参考以下文章

python/zip:如果提供了文件的绝对路径,如何消除 zip 存档中的绝对路径?

如何找到批处理文件的当前目录,然后将其用作路径?

在 Swift 中从 NSBundle 获取文件路径

python import模块的搜索路径

Python - 如何将多个文件夹从路径压缩到单个 zip 文件?

如何使用 Python 创建文件路径的 zip 文件,包括空目录?