Maven Assembly Plugin生成空小体积Jar问题求助
解决Maven Assembly插件生成空可运行Jar的问题
问题核心原因
生成的Jar为空,主要是两个关键问题导致:
- 编译后的class文件未被正确纳入打包流程
- Assembly插件未绑定Maven生命周期,单独执行打包时跳过了编译步骤
具体修复方案
1. 规范项目目录结构(推荐)
Maven默认主代码目录为src/main/java,你当前将<sourceDirectory>设为src,虽能编译但不符合标准规范,易引发路径问题。建议将代码迁移至src/main/java下,然后删除pom中的<sourceDirectory>src</sourceDirectory>配置,让Maven使用默认规则。
2. 完善Assembly插件配置
你的插件缺少版本指定,也未绑定到package生命周期,导致单独执行assembly:single时可能无编译产物可打包。修改后的插件配置如下:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <!-- 指定稳定版本,避免兼容性问题 --> <version>3.6.0</version> <configuration> <archive> <manifest> <mainClass>controller.Start</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <!-- 绑定到package阶段,执行mvn package时自动生成带依赖的可运行Jar --> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
3. 正确执行打包命令
- 若已绑定生命周期,直接执行:
mvn clean package - 若不想绑定生命周期,执行命令时先编译再打包:
mvn clean compile assembly:single
结果验证
执行命令后,target目录会生成两个Jar文件:
- 普通Jar:
Sample-0.0.1-SNAPSHOT.jar(体积较小,仅包含自身代码) - 带依赖的可运行Jar:
Sample-0.0.1-SNAPSHOT-jar-with-dependencies.jar(体积较大,包含所有依赖及可执行入口)
内容的提问来源于stack exchange,提问作者Thend
相关产品推荐
相关产品推荐

