如何依赖两个不同版本的库?

时间:2013-07-25 13:20:57

标签: java maven java-ee jboss

我正在使用ElasticSearch和JackRabbit(或者......我也在尝试)。 JackRabbit似乎依赖于Lucene 3.6.x而ElasticSearch依赖于4.3.1。我正在使用Maven和JBoss 7.1.1。我在类路径上获得Lucene 4.3.1,但随后h ***在日志中松散,因为JackRabbit需要来自旧Lucene的东西。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您将需要使用您希望使用的冲突库(弹性搜索和长耳兔)和make both into jboss as7 modules。使用jboss 7模块化类加载,您可以将它们中的每一个作为一个单独的模块“包含”它们,并且只向您的应用程序公开您使用的API。

它有点复杂(完整文档here)但是允许你让每个人使用他们自己的lucene版本 - 他们将被打包到一个包含所有theor依赖树的模块中。

编辑 - 有关如何仅导出te jboss modules documentation中某些模块内容的更多信息。你想确保你不要从任何模块中导出lucene

答案 1 :(得分:0)

您可以创建两个自定义类加载器实例,并使用其中一个加载ElasticSearch类,使用另一个加载JackRabbit。第一个必须从Lucene 3.6.x jar加载类,另一个必须从v.4.3.1 jar

加载