gpt4 book ai didi

elasticsearch - sbt无法在项目中导入两个不同版本的elasticsearch库

转载 作者:行者123 更新时间:2023-12-03 02:19:17 24 4
gpt4 key购买 nike

我正在尝试使用 scala 代码连接两个 Elasticsearch 集群并从中查询 Elasticsearch 。使用以下
scala 项目的 build.sbt 中的库和代码:

libraryDependencies +="org.elasticsearch" % "elasticsearch" % "7.2.0"
libraryDependencies += "org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % "7.2.0"
val elastic4sVersion = "6.2.8"
libraryDependencies ++= Seq(
"com.sksamuel.elastic4s" %% "elastic4s-core" % elastic4sVersion,
// for the http client
"com.sksamuel.elastic4s" %% "elastic4s-http" % elastic4sVersion,
)
它们有一个通用的客户端库,在构建时会丢失。我可以看到 6.x 或 7.x,但不能同时看到两者。
我尝试了着色方法
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.elasticsearch.client.**" -> "my_conf.@1")
.inLibrary("org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % "7.2.0")
.inAll
)

assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.elasticsearch.client.**" -> "my_conf_1.@1")
.inLibrary("org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % "6.2.2")
.inAll
)
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.elasticsearch.elasticsearch.**" -> "my_configuration.@1")
.inLibrary("org.elasticsearch" % "elasticsearch" % "7.2.0")
.inAll
)
但我无法获得可用的阴影版本并在尝试将它们导入项目引用时出错。

最佳答案

好吧,在 JVM 上,您只能拥有相同的 .class 的一个版本。在类路径中,因此每个构建工具都会尊重这一点。
sbt 将确保项目中只有一个版本的库可用(除非你明确设置它,我会假设它选择所有冲突版本中的最高版本号)所以如果你需要一个由使用的库这两个依赖项我会寻找使用相同版本依赖项的版本。 (或显式覆盖版本并使用 sbt-mima 和 sbt-missinglink 来检查此更改是否没有破坏任何内容)。
据我所知,最简单的方法是使用 the table on projects page (与 maven 一起)为您要使用的 elasticsearch 版本选择正确的 elastic4s 版本。

关于elasticsearch - sbt无法在项目中导入两个不同版本的elasticsearch库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62816458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com