关于maven编译没把resources资源包含进target目录

Spring Boot 项目的 "运行机制" 和 "资源加载逻辑" ------target/classes 是后端服务实际 "读取资源" 的目录

  1. 编译打包阶段 :当你执行 mvn compile(编译)或 mvn package(打包)时,Maven 会将 src/main/resources 下的所有资源文件(静态资源、配置文件等)复制到 target/classes 目录(这是 Maven/Gradle 等构建工具的 "约定"------ 将源码 / 资源编译为 "可运行的产物")。

  2. 服务运行阶段 :Spring Boot 启动后,会从 target/classes 目录 加载所有资源(包括 application.yml 配置、static 静态资源等)------ 因为这个目录是 Java 程序默认的 "类路径(Classpath)根目录",所有编译后的代码(.class 文件)和资源文件都在这里,服务只能识别这个目录下的资源。

简单说:src/main/resources 是 "原料仓库",target/classes 是 "成品仓库",服务只会从 "成品仓库" 取货,不会直接去 "原料仓库"。

Spring Boot 对静态资源的默认映射规则(如 classpath:/static/),其中的 classpath: 指的就是 target/classes 目录。

比如你配置的 spring.web.resources.static-locations: classpath:/static/,实际指向的是:target/classes/static/ 目录(而非 src/main/resources/static/)。

如果 target/classes 下没有 static 目录,Spring Boot 会认为 "不存在 classpath:/static/ 这个静态资源目录",自然无法找到 videos/0.mp4,最终返回 404。

一般来说处了yml配置没正确外,就是pom中没包含正确的构建资源的目录

bash 复制代码
<resources>
    <!-- 1. 处理 src/main/java 下的 MyBatis Mapper XML(原有配置,保留) -->
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
    <!-- 2. 处理 src/main/resources 下的所有文件(关键修改:添加 **/*) -->
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.xml</include>  <!-- 保留原有:XML 文件(如 MyBatis 配置) -->
            <include>**/*.yml</include>  <!-- 保留原有:YML 配置文件 -->
            <include>**/*</include>      <!-- 新增:允许所有文件/目录(包括 static) -->
        </includes>
        <!-- 可选:关闭资源过滤(避免静态文件被 Maven 篡改,如替换 ${} 变量) -->
        <filtering>false</filtering>
    </resource>
</resources>
相关推荐
benbenAItalk6 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl6 小时前
Java学习二 基本语法2, 算术运算符
java·学习
2601_966949656 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin6 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885726 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
滕州市燕猫虎计算机科技工作室个体工商户7 小时前
Java锁
java·开发语言
多加点辣也没关系7 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2337 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21037 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客8 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm