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

Maven打包未包含编译后的源码文件问题求助

问题解决:Spring Boot Maven打包后自定义类缺失

问题现象

执行mvn install后生成的0.0.1-SNAPSHOT.jar中仅包含org.springframework.boot.loader相关类,自行编写的源码编译后的类未被包含在JAR内。

配置与日志分析

pom.xml 关键配置段

<build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/main/java</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Maven执行日志关键信息

[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ stock-trader ---
[INFO] Nothing to compile - all classes are up to date
...
[INFO] --- spring-boot-maven-plugin:2.7.0:repackage (repackage) @ stock-trader ---
[INFO] Replacing main artifact with repackaged archive

问题原因

  1. 冗余配置干扰编译流程:sourceDirectory指定了Maven默认的源码目录src/main/java,属于多余配置;同时build-helper-maven-plugin重复添加该目录作为源目录,导致Maven编译逻辑异常,编译后的类未被正确识别并打包。
  2. 未清理旧产物:编译阶段提示“无代码需要编译”,但可能是之前的编译产物未被清理,实际新修改的代码未被重新编译。

解决方案

步骤1:移除冗余配置

修改pom.xml的<build>段,删除sourceDirectory和build-helper-maven-plugin的配置,保留必要插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>
    </plugins>
</build>

步骤2:清理并重新打包

执行以下命令,彻底清理之前的编译产物并重新构建:

mvn clean install

步骤3:验证结果

打开生成的JAR文件,检查BOOT-INF/classes目录,确认自定义的编译类已包含在内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:50:33