如何使用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:验证效果
举个例子:
- CSV表格里的内容:
db.url,jdbc:mysql://127.0.0.1:3306/test db.username,root db.password,123456
src/main/resources/application.properties里的占位符:
spring.datasource.url=${db.url} spring.datasource.username=${db.username} spring.datasource.password=${db.password}
- 执行Maven命令:
mvn process-resources - 查看
target/classes/application.properties,占位符已经被替换为CSV里对应的值。
可选:Excel表格适配方案
如果你的键值对存在xlsx/xls格式的Excel文件中,用以下方案替换步骤1即可:
- 写一段简单的Java/Groovy脚本,用POI读取Excel的键值对,写入到Maven的project.properties中
- 用
maven-exec-plugin在initialize阶段执行这段脚本,后续的资源过滤逻辑和上文完全一致。
注意事项
- 表格中的key要和properties里的占位符key完全一致,大小写敏感
- 取值包含特殊字符的,需要提前在表格中做转义处理,或者在资源插件配置中开启转义规则
- 正式打包前可以先执行
mvn process-resources检查替换结果,避免占位符缺失导致配置错误
内容的提问来源于stack exchange,提问作者hemanth raju
相关产品推荐
相关产品推荐

