Maven执行package未生成Fat Jar,单独assembly:single正常,求排查
问题根源
你把maven-assembly-plugin配置放在了<pluginManagement>节点下,这个节点的作用是统一管理插件的版本、配置模板,它并不会让插件自动参与到Maven的构建生命周期中。所以当你执行mvn package时,Maven不会主动调用assembly插件的single目标;而你直接执行mvn assembly:single时,是手动触发了插件的目标,所以能成功生成Fat Jar。
解决方案
有两种常见的修复方式,任选其一即可:
方式1:将插件移到<build>下的<plugins>节点(推荐)
把assembly插件的配置从<pluginManagement>中移出,直接放到<build>的<plugins>里,同时绑定到package生命周期阶段,这样执行mvn package时就会自动触发Fat Jar的构建:
<build> <sourceDirectory>src</sourceDirectory> <!-- 移除pluginManagement里的assembly配置,放到这里 --> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <!-- 建议指定明确版本,避免依赖默认版本带来的问题 --> <configuration> <archive> <manifest> <mainClass>com.xyz.main.MainHandler</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> <!-- 生成Fat Jar的关键描述符,你的配置可能遗漏了这个 --> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <!-- 绑定到package阶段,打包时自动执行 --> <goals> <goal>single</goal> <!-- 执行生成Fat Jar的目标 --> </goals> </execution> </executions> </plugin> </plugins> </build>
方式2:保留<pluginManagement>,在<plugins>里引用插件
如果是多模块项目,需要在父pom统一管理插件配置,可以保留<pluginManagement>里的配置,然后在当前模块的<plugins>节点中引用该插件并绑定生命周期:
<build> <sourceDirectory>src</sourceDirectory> <pluginManagement> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <archive> <manifest> <mainClass>com.xyz.main.MainHandler</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </pluginManagement> <!-- 引用pluginManagement中的插件,绑定到构建生命周期 --> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
验证
修改完配置后,执行mvn clean package,就能在target目录下看到生成的Fat Jar(通常命名为xxx-jar-with-dependencies.jar)。
内容的提问来源于stack exchange,提问作者Snehashish
相关产品推荐
相关产品推荐

