简单而优雅的方式来包含库/ Jar文件

时间:2014-08-04 09:49:32

标签: apache-storm

我的问题类似于这个问题:
Storm command fails with NoClassDefFoundError after adding jsoup as provided dependency

但我想知道最新的解决方案以及解决此问题的更好方法。

我将在风暴用户邮件列表中发布相同的描述:
大家好,

我正在构建一个带有大量库的拓扑,例如spring,geotools等。现在,我使用maven提取每个jar文件并将其打包到一个jar中(如许多论坛所建议的)。这里的问题,每个jar有时都有冲突的文件,所以我必须手动合并。另一件事,虽然我将我的库打包在jar中,但Storm首先加载它的库。例如,我使用guava 16,而storm使用guava 13.我的程序将无法工作,因为guava 13已加载。

目前的解决方案是我更改clojure脚本,将我的jar放在其他jar之前的classpath中。或者,我把我的罐放在lib /目录中。

在Storm中包含jar有什么简单可靠的方法吗?对不起,如果这封电子邮件太长我想说清楚。

1 个答案:

答案 0 :(得分:0)

您可以使用maven-shade-plugin代替maven-assembly-plugin来构建您的超级jar。然后,使用relocation feature将类移动到不同的包中。