与Lucene的Grails依赖性噩梦

时间:2014-10-02 14:59:16

标签: grails lucene dependencies

我最近将Elastic Search从0.90.0更新为1.3.2,现在我与另一个依赖项使用的Lucene版本发生冲突。场景如下:

jar A使用Lucene 4.9.0 jar B使用Lucene 3.3.0

关键是我得到了一个java.lang.VerifyError,因为B代码覆盖了Lucene类的最终方法,这个方法在4.9.0版本中不是最终方法。

我试过这个没有成功:

compile ('A')
compile ('B')
compile ('org.apache.lucene:lucene-core:4.9.0') {
    excludes(B)
}
compile ('org.apache.lucene:lucene-analyzers-common:4.9.0') {
    excludes(B)
}

我不知道该做什么,有什么线索吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您需要最新版本的Lucene,您的排除实际上是倒退。

你对B的声明应该是这样的:

compile ('B') {
    excludes "lucene-core", "lucene-analyzers-common"
}

还包括可能在该列表中发生冲突的任何其他lucene jar。

如果您没有在代码中专门使用任何lucene库(除了elasticsearch插件),则可以删除显式的Lucene声明。

我不太了解Lucene是否告诉你4.9.0是否向后兼容3.3.0,但这个解决方案至少应该确保4.9.0是项目类路径上的内容,并且 3.3.0