如何在pom.xml中读取properties配置文件的属性值
实现方案
有两种常用的稳定实现方式,可根据自身需求选择:
方法1:使用properties-maven-plugin读取配置(仅读取属性首选)
无需修改原有资源处理逻辑,专门用于加载properties属性到pom上下文中:
- 在pom.xml的
build->plugins节点下添加插件配置:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <!-- 构建初始化阶段就加载属性,保证后续所有环节都能读取到 --> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <!-- 替换为你自己的properties文件路径,多文件可新增多个file节点 --> <file>src/main/resources/application.properties</file> </files> </configuration> </execution> </executions> </plugin>
配置完成后,properties文件中定义的属性例如app.name=demo,就可以直接在pom的任意位置通过${app.name}引用。
方法2:使用Maven原生过滤功能(需要双向变量替换首选)
如果同时需要把pom中的属性注入到properties文件里,可以用Maven自带的filter能力,无需引入第三方插件:
- 在pom.xml的
build节点下添加如下配置:
<build> <!-- 指定要读取的properties文件作为过滤源 --> <filters> <filter>src/main/resources/application.properties</filter> </filters> <!-- 开启资源过滤,保证属性可以被正常解析替换 --> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
该方式不仅支持pom读取properties里的属性,还支持在properties文件中引用pom属性,比如在properties里写app.version=${project.version},构建时会自动替换为pom中定义的项目版本号。
注意:如果properties文件中包含
$、\等特殊字符,需要提前做转义处理,避免Maven解析属性时报错。如果需要支持多环境切换,可搭配Maven Profile配置,在不同部署环境下指定加载不同的properties文件即可。
内容的提问来源于stack exchange,提问作者Jasmine
相关产品推荐
相关产品推荐

