Maven构建生成的Jar包不含类文件问题求助
问题分析与修复方案
你的Jar包缺失class文件的核心原因是pom.xml中maven-jar-plugin的配置完全错误,具体问题点如下:
- classesDirectory配置错误:Maven编译后的class文件默认存放在
target/classes目录,但你指定了<classesDirectory>src</classesDirectory>,插件会去源码目录找文件,而非编译产物目录。 - 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
相关产品推荐
相关产品推荐

