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

为何Maven构建未对application.yaml中的资源进行过滤?

问题分析与解决方案

核心原因

Maven默认的资源过滤规则不会自动包含.yaml/.yml文件,同时YAML本身的${}语法会和Maven的变量替换逻辑产生冲突,最终导致属性未被正确替换。

解决方案

方案1:明确指定需要过滤的YAML文件

在production profile的resource配置中添加includes节点,明确告诉Maven要对YAML文件执行过滤:

<profile>
    <!-- Production mode is activated using -Pproduction -->
    <id>production</id>
    <properties>
        <toto>coucou</toto>
    </properties>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.yaml</include>
                    <include>**/*.yml</include>
                    <!-- 保留原有需要过滤的资源类型,比如properties文件 -->
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
</profile>

方案2:修改Maven变量分隔符避免YAML冲突

如果YAML文件中本身有大量${}语法(比如Spring Boot的原生占位符),可以修改Maven的资源分隔符为@,彻底避免冲突:

  1. 在profile的properties中添加分隔符配置:
<profile>
    <id>production</id>
    <properties>
        <toto>coucou</toto>
        <!-- 用@作为Maven变量分隔符 -->
        <maven.resources.delimiter>@</maven.resources.delimiter>
        <!-- 禁用默认转义逻辑,防止干扰 -->
        <maven.resources.escapeString>\</maven.resources.escapeString>
    </properties>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.yaml</include>
                    <include>**/*.yml</include>
                </includes>
            </resource>
        </resources>
    </build>
</profile>
  1. 修改application.yaml中的引用方式:
vaadin:
  productionMode: @toto@

验证步骤

执行命令时添加-X参数查看Maven日志,确认:

  • production profile已被激活(日志中会显示Activated profiles: production)
  • 资源过滤逻辑已应用到application.yaml文件
  • 属性toto=coucou已被正确加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:15:00