You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:03:40