一、前言
在最近的项目开发过程中,有一个需求,需要在Spring Boot项目的yml
配置文件中读取到mave的 pom.xml
文件中的properties
标签下的属性值,这个要怎么实现呢?
二、技术实践
-
pom.xml文件中增加测试属性
<properties><test.maven.pro>I am test pro.</test.maven.pro> </properties>
-
在yml配置文件中,使用
@...@
方式获取
maven:test:pro: @test.maven.pro@
- 测试属性读取
@SpringBootApplication
public class Main {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(Main.class, args);System.out.println("maven.test.pro=" + run.getEnvironment().getProperty("maven.test.pro"));}}
- 启动项目测试
20:13:59.064 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '@' that cannot start any token. (Do not use @ for indentation)in 'reader', line 82, column 10:pro: @test.maven.pro@^at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:445)at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:238)
运行项目时,可以看到,直接报错了,面对这个错误要怎么解决呢?
3. 问题解决
-
在pom.xml中新增如下配置:
<build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build>
-
重新运行测试
可以看到,此时可以正常读取pom.xml文件中的属性了。