使用vespa.ai进行SBT依赖性解决失败

问题描述 投票:2回答:2

我在一个sbt项目中添加了Vespa:

libraryDependencies += "com.yahoo.vespa" % "vespa-http-client" % "6.225.3"

这导致以下模块解析失败:

[warn]  Detected merged artifact: [FAILED     ] com.yahoo.vespa#component;6.225.3!component.container-plugin:  (0ms).
[warn]  Detected merged artifact: [FAILED     ] com.yahoo.vespa#vespajlib;6.225.3!vespajlib.container-plugin:  (0ms).
[warn] ==== local: tried
[warn] ==== local: tried
[warn] ==== public: tried
[warn] ==== public: tried
[warn] ==== local-preloaded-ivy: tried
[warn]   https://repo1.maven.org/maven2/com/yahoo/vespa/component/6.225.3/component-6.225.3.container-plugin
[warn]   C:\Users\gary\.sbt\preloaded\com.yahoo.vespa\vespajlib\6.225.3\container-plugins\vespajlib.container-plugin
[warn] ==== local-preloaded-ivy: tried
[warn] ==== local-preloaded: tried
[warn]   C:\Users\gary\.sbt\preloaded\com.yahoo.vespa\component\6.225.3\container-plugins\component.container-plugin
[warn]   file:/C:/Users/gary/.sbt/preloaded/com/yahoo/vespa/vespajlib/6.225.3/vespajlib-6.225.3.container-plugin
[warn] ==== local-preloaded: tried
[warn]   file:/C:/Users/gary/.sbt/preloaded/com/yahoo/vespa/component/6.225.3/component-6.225.3.container-plugin

旧版本和最新版本(1.1.1)都失败。

scala sbt vespa
2个回答
2
投票

默认情况下,SBT使用工件的打包类型作为文件扩展名。我们用于component工件(以及其他一些工件)的pom.xml使用包装类型container-plugin,而实际的jar文件当然具有标准的jar后缀。

因此,您需要手动为这些工件配置SBT文件后缀。我不知道是否有一种方便的方法可以同时为一组依赖项执行此操作,因为我不是SBT专家。但对于您收到此错误的每个工件,您可以尝试以下操作:

libraryDependencies += "com.yahoo.vespa" % "component" % "6.225.3" artifacts( Artifact("component", "", "jar"))

我在this SO answer找到它并且没有自己测试过。也许您可以在Using dependencies with artifacts的SBT参考手册中找到一些有用的信息。


1
投票

以下是vespa-http-cient的依赖关系:https://github.com/vespa-engine/vespa/blob/master/vespa-http-client/pom.xml我不太了解SBT,也许你需要明确地包含这些依赖关系,或指定包含传递依赖关系。

© www.soinside.com 2019 - 2024. All rights reserved.