为什么我的 spark 连接器包的 maven 子依赖版本与其他版本不同

why is my maven sub dependency version for spark connector package different from others

我正在尝试使用现有项目中的 pom 文件,但出现错误“无法解析 org.yaml:snakeyaml:1.15”

关于此错误,我发现 com.datastax.spark:spark-cassandra-connector_2.11:2.5.0 使用了几个依赖项,并且向下几层使用了 snakeyaml:1.15 被公司代理隔离。有没有办法指定我想使用的给定 Maven 依赖项 snakeyaml:1.16?

我不明白的一件事是我查看了也使用 com.datastax.spark:spark-cassandra-connector_2.11:2.5.0 的参考项目,它正在使用更新的 com.datastax.oss:java-driver-core-shaded:4.9.0,不再需要 snakeyaml:1.15 其中我使用旧的 com.datastax.oss:java-driver-core-shaded:4.5.0

为什么它在那个 pom 中工作? com.datastax.spark:spark-cassandra-connector_2.11:2.5.0

我们有相同的 Maven 列表版本

我看到它有一些排除项,但 none 解决了 snake yaml 版本或其任何父依赖项。

是否有 pom 文件的另一部分可以解决我所缺少的这个问题?请指教

我的pom

<scala.compat.version>2.11</scala.compat.version>
<spark.cassandra.version>2.5.0</spark.cassandra.version>
<dependency>
  <groupId>com.datastax.spark</groupId>
  <artifactId>spark-cassandra-connector_${scala.compat.version}</artifactId>
  <version>${spark.cassandra.version}</version>
</dependency>

哪里出错了

但是另一个项目正在使用正确的阴影版本 com.datastax.oss:java-driver-core-shaded:4.9.0,它消除了蛇依赖性

工作 pom

<scala.compat.version>2.11</scala.compat.version>
<spark.cassandra.version>2.5.0</spark.cassandra.version>
<dependency>
  <artifactId>spark-cassandra-connector_${scala.compat.version}</artifactId>
  <exclusions>
    <exclusion>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </exclusion>
    <exclusion>
      <artifactId>netty-all</artifactId>
      <groupId>io.netty</groupId>
    </exclusion>
    <exclusion>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
    </exclusion>
  </exclusions>
  <groupId>com.datastax.spark</groupId>
  <version>${spark.cassandra.version}</version>
</dependency>

您在 POM 的 <dependencyManagement> 部分添加一个条目,您可以在其中指定所需的 snakeyaml 版本。

这将覆盖 snakeyaml 的所有传递版本定义。

我建议切换到 SCC 2.5.2(或至少 2.5.1)- 那里有关于依赖项的修复,它已将驱动程序升级到 4.10.0 等。另一种可能性是使用 spark-cassandra-connector-assembly 相反,包含所有依赖项并加阴影。