在Spring Boot中,要在application.yml中读取pom.xml中的属性,可以通过Maven的资源过滤功能实现。以下是具体配置步骤:
- 首先在
pom.xml中定义属性并配置资源过滤: 
<project>
    <!-- 定义自定义属性 -->
    <properties>
        <app.version>1.0.0</app.version>
        <app.name>my-springboot-app</app.name>
    </properties>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 开启资源过滤 -->
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>
- 然后在
application.yml中使用@属性名@的方式引用: 
app:
  # 引用pom.xml中定义的属性
  version: @app.version@
  name: @app.name@
  # 也可以用于配置其他属性
  full-description: "${app.name} version ${app.version}"
# 可以在任何地方使用这些属性
server:
  port: 8080
  servlet:
    context-path: /${app.name}
- 如果需要在Java代码中使用这些属性,可以通过
@Value注解注入: 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppInfo {
    @Value("${app.version}")
    private String appVersion;
    
    @Value("${app.name}")
    private String appName;
    
    // getters and setters
}
工作原理:
- Maven在构建项目时,会对
src/main/resources目录下的文件进行过滤 - 当
filtering设置为true时,Maven会将文件中@属性名@格式的占位符替换为pom.xml中定义的对应属性值 - 这样Spring Boot在启动时,就能读到替换后的实际值
 
注意:本文归作者所有,未经作者允许,不得转载