2017-01-21 3 views
0

Мое приложение использует транспортный клиент Elasticsearch для подключения к кластеру ES 1.7.2. Согласно documentation, он использует Lucene 4.10.4, поэтому ниже версии зависимостей в моем приложении:Конфликт версий зависимостей Maven: Elasticsearch и Lucene

Elasticsearch : 1.7.2 
Lucene : 4.10.4 

Теперь я хочу использовать библиотеку на основе Lucene (here) для выполнения в перколяции памяти. Заглядывая в pom.xml, кажется, что он использует библиотеки Lucene 6.3.0. Таким образом, после добавления этой зависимости, мое приложение не запускается, как Elasticsearch нуждается в Lucene 4.10.4 и Maven переопределяет его с 6.3.0, я попробовал следующие варианты:

  • Искал для более ранней версии библиотеки перколяции совместимый с Lucene 4.10.4 - не удался
  • Пробовал делать работу elasticsearch с Lucene 6.3.0 - без успеха. Я могу попробовать обновить версию зависимости elasticsearch, но мое приложение не сможет подключиться к кластеру 1.7.2 с новой версией (также я не могу обновить кластер).

Любые другие варианты?

ответ

1

Вы можете попытаться исключить зависимость от lucene в своей другой библиотеке и надеяться, что она будет работать с версией 4.x.

в вашем Maven POM, сделать

<dependency> 
    <groupId>com.github.flaxsearch</groupId> 
    <artifactId>luwak</artifactId> 
    <version>1.4.0</version> 
    <exclusions> 
    <exclusion> 
     <groupId>[the lucene lib group]</groupId> 
     <artifactId>[the lucene lib artifact]</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

Технически, это способ решения конфликтов версий. Но нет никакой гарантии, что приложение может быть построено.

+0

благодарит за ответ. Я попытался исключить зависимости lucene-core', но теперь он выдает «NoSuchMethodError», предположительно потому, что ожидает метод, который отсутствует в '4.10.4'. Что-нибудь еще мы можем сделать, чтобы он работал? –

+0

Ничего, я не могу придумать. Две библиотеки, которые вы хотите использовать вместе, кажутся несовместимыми из-за их сильной зависимости от разных версий lucene. Возможно, свяжитесь с ElasticSearch и спросите, включено ли обновление в их расписание. –

+0

@ DarshanMehta Я думаю, что у вас есть лучшая возможность перебросить luwk в Lucene 4.10.4, чем ElasticSearch в Lucene 6.3.0. Если вам повезло, есть несколько незначительных несовместимостей. – lexicore