在多模块项目中使用Maven shade插件 - NullPointerException

Man*_*noj 12 uberjar maven maven-shade-plugin

我有一个场景,我需要创建一个包含所有模块及其依赖项的多模块maven项目的超级jar.我尝试使用maven shade插件.但它似乎只有在模块级别使用它时才有效.如果我在父pom中添加插件条目,那么构建中断(它会尝试遮蔽父pom)

 [INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing null with C:\Projects\foo.bar\target\foobar-0.0.1-SNAPSHOT-shaded.pom
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error creating shaded jar: null: NullPointerException -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

它似乎有意义,因为<packaging>父母maven项目是pom.但应该有一些方法为多模块项目创建一个超级jar ...任何想法人???

Jes*_*ebb 13

您不应该使用父项目的POM文件来尝试着色; 你应该为此使用一个单独的聚合器项目.父maven项目用于继承,而聚合器项目用于在一组子项目上执行聚合功能; 比如将他们的JAR整合成一个超级罐子.这个项目只是项目根目录下的pom文件(与所有子模块文件夹相同的级别),它引用了子项目并具有树荫插件配置.确保为此pom指定的打包是JAR.

以下是解释POM关系以及聚合和继承之间差异的文档.