如何在多模块项目中配置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] ------------------------------------------------------------------------