如何将同一个包的多个版本作为项目的间接依赖项?

时间:2017-03-29 20:20:03

标签: java maven elasticsearch neo4j lucene

我正在开发一个同时连接到Elasticsearch 5.2.1和Neo4j 3.1.0的项目。这两个软件包都使用Lucene但不幸的是版本不兼容。 Elaticseach需要Lucence 6.4.1和Neo4j与Lucene 5.5.0一起使用。

结果,我面临运行时错误,因为某些类具有不兼容的签名。有什么方法可以在一个项目中同时拥有Elasticsearch和Neo4j(具有给定版本)吗?

我要做的是将Elasticsearch包添加到this project。以下是我添加的Elasticsearch依赖项:

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>5.2.1</version>
    </dependency>

我怎样才能让这两个人很好地相互配合?

1 个答案:

答案 0 :(得分:0)

jar的每个组合都应该打包在一个带有依赖项或war的独特jar中,这些不应该共享相同的父类加载器,以便在具有依赖关系或战争的jar的两个不同版本中退出的加载类将被加载一个独特的类加载器。