我有一个具有Spark 2.1.0
和Presto 0.166
的模块。Spark 2.1.0需要com.faster.xml
版本2.6.5,而Presto 0.166严格要求2.8.1。如何在同一pom.xml中解决问题,以便我可以在同一模块中运行它们?
只需在POM文件中指定com-fasterxml-jackson
的版本即可。这里指定的版本将覆盖Spark 2.1.0
和Presto 0.166
中的版本
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto...</artifactId>
<version>0.166</version>
</dependency>
由于Spark 2.1.0
可以使用com.fasterxml.jackson 2.8.1
,因此您不需要2个不同的版本。
资源 -
- 依赖机制简介
您不能在单个pom.xml
中使用相同依赖项的多个版本,从Spark 2.1.0
或Presto 0.166
排除依赖性com.faster.xml version
,例如:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
您是否要为Presto编写插件?如果是这样,则PRESTO SPI明确取决于jackson-annotations
,而不取决于实现。在插件中使用较旧版本的杰克逊版本的较新版本的注释应该没有问题。Presto Engine使用的Jackson版本可以并且将与您的插件使用的版本不同。
Presto插件系统的设计为具有非常最小的依赖性,并允许您使用所需的任何版本(因为在使用较旧版本的库的随机系统编写连接器时通常是必要的(。