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

Maven构建后自行编写的部分Java文件对应的class未打包进jar是什么原因

Maven构建后部分Java类未打入jar包的常见原因

以下是该问题的高频触发原因及对应排查方法:

  • 存放路径不符合Maven标准目录结构
    Maven默认仅将src/main/java目录下的Java文件识别为正式源码进行编译打包,如果你将代码存放在自定义目录(比如自建的code、java目录,或是src/main/resources、src/test/java下),默认不会被打入最终jar包。
    排查方式:核对Java文件存放路径是否为项目根目录下的src/main/java,且包名与文件夹层级完全对应。

  • 构建插件配置了排除规则
    若pom.xml中maven-compiler-plugin(编译插件)或maven-jar-plugin(打包插件)配置了<excludes>过滤规则,且你的Java文件命中了排除规则,就会被跳过打包。
    排查方式:检查pom中两个插件的配置,以下为典型的错误排除配置示例:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <!-- 该规则会排除所有test包下的Java文件 -->
        <excludes>
          <exclude>**/test/**/*.java</exclude>
        </excludes>
      </configuration>
    </plugin>
    
  • Java文件存在编译错误被跳过
    若你在pom中配置了maven.compiler.failOnError=false,编译报错的Java文件不会终止构建流程,而是直接跳过编译,自然不会生成class文件打入jar。
    排查方式:执行mvn clean compile命令,查看控制台输出是否有对应Java文件的编译报错信息。

  • 自定义源码目录未覆盖代码存放路径
    若你在pom中通过<sourceDirectory>标签修改了默认的源码目录,但是没有包含你存放代码的目录,对应路径下的Java文件不会被识别为源码。
    排查方式:检查pom中是否存在<sourceDirectory>自定义配置,核对配置路径是否覆盖你存放业务代码的目录。

  • IDE目录标记错误
    使用IDEA等IDE开发时,若误将Java文件所在的目录标记为测试源码根目录、资源根目录等非正式源码类型,IDE触发的Maven构建会跳过对应目录的代码打包。
    排查方式:右键点击Java文件所在目录,核对目录标记类型,正式业务代码所在目录需要标记为Sources Root。


内容的提问来源于stack exchange,提问作者Coder-m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:45:03