如何在多模块项目中配置Maven shade插件?

大家! 我一直试图使用Maven Shade插件获取jar,但我仍然没有获得成功:(

这是我的项目结构:

MainModule -Module1 -src -pom.xml -Module2 -src -pom.xml -pom.xml 

Module1(pom.xml):

  MainModule com.plugintest 1.0-SNAPSHOT  4.0.0 Module1 

Module2(pom.xml):

  MainModule com.plugintest 1.0-SNAPSHOT  4.0.0 Module1 

MainModule(pom.xml):

 com.plugintest MainModule pom 1.0-SNAPSHOT  Module1 Module2     org.apache.maven.plugins maven-shade-plugin 2.2   package  shade       

根据这段代码,我得到2个jar文件(Module1-version.jar和Module2-version.jar)。 但这不是我想要的。 我希望获得1个jar文件(MainModule-version.jar),其中包含另一个(Module1和Module2)。

请告诉我,为什么这个Shade插件不起作用?

MainModule不应该生成一个jar文件。 它只能生成… pom文件。 它包含所有子模块共享的配置。 这就是针对每个模块调用shade插件的原因。

而是创建第三个模块。 我们称之为FinalModule 。 该模块是MainModule 。 将整个节点从MainModule pom.xml移动到FinalModule pom.xml。

文件结构:

    MainModule
       -FinalModule
         -src
         -pom.xml
       -Module1
         -src
         -pom.xml
       -Module2
         -src
         -pom.xml
       -pom.xml

FinalModule pom.xml如下所示:

FinalModule(pom.xml)

  com.plugintest MainModule 1.0-SNAPSHOT  FinalModule   com.plugintest Module1 1.0-SNAPSHOT   com.plugintest Module2 1.0-SNAPSHOT      org.apache.maven.plugins maven-shade-plugin 2.2   package  shade       

最后,你应该得到这样的东西:

 [INFO] [INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ FinalModule --- [INFO] Building jar: D:\workspaces\java\Parent\FinalModule\target\FinalModule-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-shade-plugin:2.2:shade (default) @ FinalModule --- [INFO] Including my:Module1:jar:1.0-SNAPSHOT in the shaded jar. [INFO] Including my:Module2:jar:1.0-SNAPSHOT in the shaded jar. [INFO] Replacing original artifact with shaded artifact. [INFO] Replacing D:\workspaces\java\Parent\FinalModule\target\FinalModule-1.0-SNAPSHOT.jar with D:\workspaces\java\Parent\FinalModule\target\FinalModule-1.0-SNAPSHOT-shaded.jar [INFO] Dependency-reduced POM written at: D:\workspaces\java\Parent\FinalModule\dependency-reduced-pom.xml [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] Parent ............................................ SUCCESS [0.016s] [INFO] Module1 ........................................... SUCCESS [1.654s] [INFO] Module2 ........................................... SUCCESS [0.343s] [INFO] FinalModule ....................................... SUCCESS [0.953s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------