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

Maven构建生成的Jar包不含类文件问题求助

问题分析与修复方案

你的Jar包缺失class文件的核心原因是pom.xml中maven-jar-plugin的配置完全错误,具体问题点如下:

  1. classesDirectory配置错误:Maven编译后的class文件默认存放在target/classes目录,但你指定了<classesDirectory>src</classesDirectory>,插件会去源码目录找文件,而非编译产物目录。
  2. includes配置错误:<include>src</include>只会把src目录本身打包进Jar,不会包含编译好的class文件。

修复方案

方案1:移除错误的插件配置(推荐)

maven-jar-plugin有默认的正确打包逻辑,不需要额外配置。直接删除pluginManagement下的maven-jar-plugin节点即可:

<build>
    <pluginManagement>
        <plugins>
            <!-- 移除这里的maven-jar-plugin配置 -->
        </plugins>
    </pluginManagement>
</build>

方案2:修正插件配置(如果需要自定义打包规则)

如果确实需要自定义Jar包内容,使用正确的配置指向编译产物目录:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <!-- 可选:默认就是target/classes,可省略此配置 -->
        <classesDirectory>${project.build.outputDirectory}</classesDirectory>
        <!-- 仅包含class文件,可根据需求调整 -->
        <includes>
            <include>**/*.class</include>
        </includes>
    </configuration>
</plugin>

额外排查步骤

  • 查看Jenkins构建日志,确认compile阶段是否顺利完成,有没有编译错误导致class文件未生成
  • 检查Jenkins工作空间的target/classes目录,确认是否存在编译后的class文件
  • 本地执行mvn clean package,查看生成的Jar包内容,排除Jenkins环境差异问题
  • 检查父pom.xml是否有修改编译输出路径、跳过编译阶段等特殊配置

内容的提问来源于stack exchange,提问作者Kivi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:01:36