• pom.xml中的配置无法被yaml读取


    问题描述

    项目中指定了多个profiles, 但是application.yaml读取报错,报错信息如下

    Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts
    12:41:52.325 [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 3, column 13:
            active: @env@
                    ^
    
    	at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:445)
    	at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:238)
    	at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:669)
    	at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
    	at org.yaml.snakeyaml.comments.CommentEventsCollector$1.peek(CommentEventsCollector.java:57)
    	at org.yaml.snakeyaml.comments.CommentEventsCollector$1.peek(CommentEventsCollector.java:43)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    profiles配置如下

    <profiles>
        <profile>
            <id>devid>
            <properties>
                <env>devenv>
            properties>
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
        <profile>
            <id>testid>
            <properties>
                <env>testenv>
            properties>
        profile>
        <profile>
            <id>prodid>
            <properties>
                <env>prodenv>
            properties>
        profile>
    profiles>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    application.yaml中的配置

    spring:
      profiles:
        active: @env@
    
    • 1
    • 2
    • 3

    无论怎么切换profiles,或者刷新maven项目,一直报这个错误。

    之前的项目也使用了这个写法,但是没有这个问题

    解决方案

    在Maven中添加如下配置

    <build>
        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
                
                <filtering>truefiltering>
            resource>
        resources>
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    如果继承了spring-boot-parent就不会有这个问题

    在这里插入图片描述

    原因在于,spring-boot-parent中也有这个maven配置,默认将resources下的文件过滤掉,防止maven对文件占位符进行修改

  • 相关阅读:
    T225362 《山茶文具店》
    Python安装教程
    15.springmvc源码解读之手写springmvc(简易版本)
    社交变革:探索Facebook如何塑造我们的日常生活
    如何通过低代码平台搭建以“督办”为中心的办公管理系统
    达梦数据库恢复到指定时间点
    工业智能网关BL110应用之三十六: 如何连接配置金鸽 金鸽Modbus服务器
    药物滥用第五篇介绍
    等精度频率计verilog,quartus仿真视频,原理图,代码
    从2022安洵杯[babyPHP]看Soap+CLRF造成SSRF漏洞
  • 原文地址:https://blog.csdn.net/HHCS231/article/details/136780345