比如我们在pom中配置了一些属性,希望可以直接读取到yml里面作为配置使用。
<artifactId>config-center</artifactId>
<packaging>jar</packaging>
<properties>
<application.name>${artifactId}</application.name>
</properties>
下面我希望直接使用 @xx@ 来读取pom中的配置
server:
port: 0
tomcat:
uri-encoding: UTF-8
spring:
application:
name: @application.name@
profiles:
active: native
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server:
native:
search-locations: classpath:config/
如果报错:
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 8, column 11:
name: @application.name@
表示缺少一些maven插件,一般加入下面的插件即可解决:
<build>
<!--指定filtering=true.maven的占位符解析表达式就可以用于它里面的文件-->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!--支持yaml读取pom的参数-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>UTF-8</encoding>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>