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

Spring Boot测试环境application.yml引用pom属性@符号解析报错问题

问题根因
  • Spring Boot 默认继承的父POM仅对src/main/resources目录开启了Maven资源过滤(自动替换@包裹的Maven属性),src/test/resources目录的过滤功能默认未启用
  • 测试执行时@modelVersion@没有被替换为POM中的实际值,直接保留@开头的原始字符串,不符合YAML语法规范,因此抛出SnakeYAML解析异常
  • 给@modelVersion@加单引号后仅解决了YAML语法报错,但因为过滤未开启,属性值不会被替换,所以读取到的是原始字符串
解决方案

在你的pom.xml的<build>节点下添加测试资源过滤配置即可,配置示例如下:

<build>
    <!-- 原有主资源配置无需修改,默认继承spring-boot-starter-parent的规则即可 -->
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
            <!-- 仅使用@作为占位符,避免和Spring本身的${}配置占位符冲突 -->
            <delimiters>
                <delimiter>@</delimiter>
            </delimiters>
            <useDefaultDelimiters>false</useDefaultDelimiters>
        </testResource>
    </testResources>
</build>

配置完成后执行mvn clean test清理历史缓存的测试配置文件,再运行测试即可正常读取到替换后的属性值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:05