如何在maven项目的同一模块中使用com.fasterxml.jackson 2.8.1和2.6.5?

时间:2017-06-02 07:07:51

标签: maven apache-spark dependency-management presto

我的模块有Spark 2.1.0Presto 0.166。 Spark 2.1.0需要com.faster.xml版本2.6.5,而Presto 0.166需要2.8.1严格。如何在同一个pom.xml中解决问题,以便我可以在同一个模块中运行它们?

3 个答案:

答案 0 :(得分:1)

只需在pom文件中指定com-fasterxml-jackson的版本即可。此处指定的版本将覆盖Spark 2.1.0Presto 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个不同版本的版本。

资源 -

答案 1 :(得分:0)

您不能在来自pom.xmlcom.faster.xml version的单个Spark 2.1.0exclude-dependency Presto 0.166中使用具有相同依赖关系的多个版本,例如:

<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>

答案 2 :(得分:0)

您是否正在尝试为Presto编写插件?如果是这样,Presto SPI明确仅依赖jackson-annotations而不是实现。在插件中使用较旧版本的Jackson注释的新版本应该没有问题。 Presto引擎使用的Jackson版本可以并且将与插件使用的版本不同,因为插件被加载到单独的类加载器中。

Presto插件系统旨在具有非常小的依赖性,并允许您使用所需的任何版本的库(因为在将连接器写入使用旧版本库的随机系统时通常是必需的。)