Lucene ломает зависимость от Snowball
В моем Java-проекте (с использованием Maven) у меня есть Gate 8.0 в качестве основы для некоторой обработки естественного языка, и он загружает плагин Stemmer_Snowball (см. Список плагинов). Как указывается в документации, Stemmers обрабатывает обертки ресурсов над стеммерами Snowball ( http://snowball.tartarus.org/).
Gate плюс стеммеры работали хорошо, пока я не добавил в проект Hibernate Search ORM 5.9 (таким образом, Lucene):
mvn test-compile dependency:tree
...
...
[INFO] +- org.hibernate:hibernate-search-orm:jar:5.9.0.Final:compile
[INFO] | \- org.hibernate:hibernate-search-engine:jar:5.9.0.Final:compile
[INFO] | +- org.apache.lucene:lucene-core:jar:5.5.5:compile
[INFO] | +- org.apache.lucene:lucene-misc:jar:5.5.5:compile
[INFO] | +- org.apache.lucene:lucene-analyzers-common:jar:5.5.5:compile
[INFO] | +- org.apache.lucene:lucene-facet:jar:5.5.5:compile
[INFO] | | \- org.apache.lucene:lucene-queries:jar:5.5.5:compile
Оказывается lucene-analyzers-common
пакет переопределяет некоторую старую версию org.tartarus.snowball
пакеты (см. сводку пакетов для получения дополнительной информации), и теперь пользовательский пакет Lucene Snowball и оригинальный пакет Snowball несовместимы:
- Оригинальная версия Snowball: https://github.com/snowballstem/snowball/tree/master/java/org/tartarus/snowball
- Версия Lucene Snowball: https://github.com/apache/lucene-solr/tree/master/lucene/analysis/common/src/java/org/tartarus/snowball
Обратите внимание, что даже если Lucene переопределяет классы пакетов Snowball, он сохраняет исходное имя пакета, что делает библиотеки несовместимыми.
Я хочу использовать в моем проекте как Gate (с оригинальными стеммерами Snowball), так и Hibernate Search (с пользовательскими стеммерами Lucene Snowball). Maven изящно останавливает нас от загрузки нескольких версий одного и того же пакета, что мне делать в этом случае?
Обновление: я добавил проблему в трекер ошибок Lucene.