在我的Java项目中(使用Maven)我以Gate 8.0为基础进行自然语言处理,并加载 Stemmer_Snowball 插件(参见plugin list )。作为the documentation states,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
软件包的旧版本(请参阅the package summary for more info),现在自定义的Lucene Snowball软件包和原始的Snowball软件包不兼容:
注意即使Lucene重写了Snowball包类,也会保留原始包名,这会使库不兼容。
我想在我的项目中同时使用Gate(使用原始Snowball词干分析器)和Hibernate Search(使用自定义Lucene Snowball词干分析器)。 Maven优雅地阻止我们加载同一个包的多个版本,那么在这种情况下该怎么办?