在我的 Java 项目(使用Maven)中,我将Gate 8.0作为进行一些自然语言处理的基础,它加载了Stemmer_Snowball插件(参见插件列表)。正如文档所述,Stemmer 正在处理 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 软件包不兼容:
- 雪球原版: 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 优雅地阻止我们加载同一个包的多个版本,那么在这种情况下我该怎么办?