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

Spring Boot Maven插件为何在最终Jar中排除资源文件?

解决Spring Boot打包后缺失XML文件的问题

问题原因

你通过build-helper-maven-plugin的add-source目标将src/main/generated标记为Java源码目录,这只会让Maven编译该目录下的Java文件,但不会自动将该目录识别为资源目录处理XML等非Java文件。虽然target/classes中存在XML文件,但这可能是临时生成或其他插件的副作用,Spring Boot Maven Plugin在打包可执行Jar时,会基于Maven正式标记的资源目录来收集文件,未被标记为资源目录的文件可能被遗漏。

解决方案

修改build-helper-maven-plugin的配置,新增一个add-resource执行,将src/main/generated同时标记为资源目录,确保XML文件被纳入Maven的资源处理流程:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <!-- 原有的源码目录配置 -->
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/main/generated</source>
                </sources>
            </configuration>
        </execution>
        <!-- 新增资源目录配置 -->
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>add-resource</goal>
            </goals>
            <configuration>
                <resources>
                    <resource>
                        <directory>src/main/generated</directory>
                        <!-- 可选:明确指定要包含的XML文件,如需过滤可调整 -->
                        <includes>
                            <include>**/*.xml</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

验证步骤

执行mvn clean package后,打开生成的Jar包,检查BOOT-INF/classes目录下是否存在目标XML文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:22:45