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

如何使用Maven读取表格键值并替换property文件中的占位符?

Maven读取表格键值对替换properties占位符实现方案

前置条件

你需要提前把存储键值对的表格整理好,最常用的是CSV格式(首列为key,次列为value,无多余表头),存到项目路径下,比如src/main/config/key-value.csv。如果是Excel格式的表格可以看文末的适配方案。

核心依赖Maven原生的「资源过滤」能力,配合插件读取表格键值对注入到Maven属性上下文即可实现自动替换。


步骤1:配置CSV读取插件

在pom.xml的build -> plugins节点下添加maven-csv-properties-plugin配置,用来把CSV里的键值对加载到Maven属性中:

<plugin>
    <groupId>com.github.rodionmoiseev</groupId>
    <artifactId>maven-csv-properties-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>load</goal>
            </goals>
            <configuration>
                <!-- 你的CSV表格路径 -->
                <csvFile>src/main/config/key-value.csv</csvFile>
                <!-- CSV分隔符,默认逗号,如果是制表符就填\t -->
                <separator>,</separator>
                <!-- 跳过CSV第一行(如果有表头的话开启,没有就设为false) -->
                <skipFirstLine>false</skipFirstLine>
            </configuration>
        </execution>
    </executions>
</plugin>

步骤2:开启properties文件的资源过滤

在pom.xml的build -> resources节点配置,指定要替换占位符的properties文件路径,开启过滤能力:

<resources>
    <resource>
        <!-- properties文件所在的目录 -->
        <directory>src/main/resources</directory>
        <!-- 开启占位符替换 -->
        <filtering>true</filtering>
        <!-- 只处理properties文件,避免其他资源被误修改,可选 -->
        <includes>
            <include>*.properties</include>
        </includes>
    </resource>
</resources>

如果不想用默认的${key}占位符格式,避免和其他配置冲突,可以自定义分隔符,添加如下配置到build节点下:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.3.1</version>
            <configuration>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

改完后占位符格式就变成@key@。


步骤3:验证效果

举个例子:

  1. CSV表格里的内容:
db.url,jdbc:mysql://127.0.0.1:3306/test
db.username,root
db.password,123456
  1. src/main/resources/application.properties里的占位符:
spring.datasource.url=${db.url}
spring.datasource.username=${db.username}
spring.datasource.password=${db.password}
  1. 执行Maven命令:mvn process-resources
  2. 查看target/classes/application.properties,占位符已经被替换为CSV里对应的值。

可选:Excel表格适配方案

如果你的键值对存在xlsx/xls格式的Excel文件中,用以下方案替换步骤1即可:

  1. 写一段简单的Java/Groovy脚本,用POI读取Excel的键值对,写入到Maven的project.properties中
  2. 用maven-exec-plugin在initialize阶段执行这段脚本,后续的资源过滤逻辑和上文完全一致。

注意事项

  • 表格中的key要和properties里的占位符key完全一致,大小写敏感
  • 取值包含特殊字符的,需要提前在表格中做转义处理,或者在资源插件配置中开启转义规则
  • 正式打包前可以先执行mvn process-resources检查替换结果,避免占位符缺失导致配置错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:45:00