maven-shade-plugin vs maven-assembly-plugin

时间:2014-07-15 01:59:03

标签: hadoop maven-assembly-plugin classnotfound maven-shade-plugin spring-data-hadoop

我使用spring-data-hadoop编写了一个hadoop MR作业,并使用maven-shade-plugin打包所有必需的jar。 但是当我从命令行运行这个工作:hadoop jar时,它为Spring-beans提供了ClassNotFound的Exception。 加载spring应用程序上下文导致的问题。 之后我使用了maven-assembly-plugin并在lib文件夹中打包了所有必需的jar。这次它奏效了。

我无法理解为什么maven-shade-plugin失败了。有人可以帮我理解我的观察。

2 个答案:

答案 0 :(得分:0)

我不知道您是如何使用阴影插件的,但我认为您可能会遇到像META-INF/spring.handlersMETA-INF/spring.schemas这样的元信息在所有弹簧罐中都有相同路径的问题。< / p>

答案 1 :(得分:0)

来自http://maven.apache.org/plugins/maven-shade-plugin/

  

这个插件提供了将工件打包在超级jar中的功能,包括它的依赖关系和阴影 - 即重命名 - 一些依赖项的包。

我猜你的阴影插件的配置已经重命名了一些包,以至于无法再找到类文件。