Spring Boot项目中,如何在yml配置文件中读取maven pom.xml文件中的properties标签下的属性值

一、前言

在最近的项目开发过程中,有一个需求,需要在Spring Boot项目的yml配置文件中读取到mave的 pom.xml文件中的properties标签下的属性值,这个要怎么实现呢?

二、技术实践

  1. pom.xml文件中增加测试属性

    xml 复制代码
    <properties>
        <test.maven.pro>I am test pro.</test.maven.pro>
    </properties>
  2. 在yml配置文件中,使用@...@方式获取

yml 复制代码
maven:
  test:
    pro: @test.maven.pro@
  1. 测试属性读取
java 复制代码
@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"));
    }

}
  1. 启动项目测试
powershell 复制代码
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. 问题解决

  1. 在pom.xml中新增如下配置:

    xml 复制代码
    <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
  2. 重新运行测试

可以看到,此时可以正常读取pom.xml文件中的属性了。

相关推荐
SuperherRo24 分钟前
Web攻防-XML&XXE&无回显带外&SSRF元数据&DTD实体&OOB盲注&文件拓展
xml·xxe·ssrf·dtd·无回显·文件扩展·oob盲注
资讯第一线1 小时前
MSXML 6.0 SP1 x86 x64 (XML解析器) 下载
xml
秋千码途1 小时前
小架构step系列08:logback.xml的配置
xml·java·logback
hweiyu005 小时前
Maven 私库
java·maven
Super Rookie5 小时前
Spring Boot 企业项目技术选型
java·spring boot·后端
来自宇宙的曹先生6 小时前
用 Spring Boot + Redis 实现哔哩哔哩弹幕系统(上篇博客改进版)
spring boot·redis·后端
sleepcattt6 小时前
Spring中Bean的实例化(xml)
xml·java·spring
lzzy_lx_20897 小时前
Spring Boot登录认证实现学习心得:从皮肤信息系统项目中学到的经验
java·spring boot·后端
小七mod7 小时前
【Spring】Java SPI机制及Spring Boot使用实例
java·spring boot·spring·spi·双亲委派
上上迁8 小时前
分布式接口幂等性的演进和最佳实践,含springBoot 实现(Java版本)
java·spring boot·分布式