在application.yml中访问Maven属性“开发人员”(春季启动)

时间:2019-07-15 13:57:02

标签: java spring maven spring-boot pom.xml

我想要一个开发人员,该开发人员在pom.xml中定义,带有标签,以在构建过程后出现在application.yml中。它以某种方式可以处理除开发人员以外的所有属性。

这是在Spring Boot项目中,我希望在构建过程中填充属性。

这是pom.xml的摘录

<description>my description</description>

<developers>
    <developer>
        <id>12345</id>
        <name>John Doe</name>
        <email>john@doe.com</email>
    </developer>
</developers>

这是在application.yml中

info:
  description: "@project.description@"
  developer: "@project.developers[0].id@"

它仅用于描述,不适用于开发人员。我尝试了许多变体,例如$ {..},“ @ project.developers.0.id”。似乎没有任何作用。

如果有人有一个主意,我将非常感谢。

2 个答案:

答案 0 :(得分:2)

您可以通过这种优雅的方式读取开发者 idemail 地址或 pom.xml 中的任何值:

  1. 使用默认数据和附加数据生成 build-info.properties
  2. 使用 Spring 通过 BuildProperties 轻松读取此文件中的值。

pom.xml:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
            </goals>
            <configuration>
                <additionalProperties>
                    <developer>${project.developers[0].email}</developer>
                </additionalProperties>
            </configuration>
        </execution>
    </executions>
</plugin>

这将在 build-info.properties 目录下生成一个 META-INF 文件,其内容如下:

build.artifact=<artifactId-from-pom>
build.group=<groupId-from-pom>
build.name=<name-from-pom>
build.time=<build-time>
build.version=<version-from-pom>
build.developer=<email-of-the-first-developer-from-pom>

然后您可以使用 Spring 读取值:

@Configuration
public class OpenApiConfiguration {

    @Autowired
    private BuildProperties buildProperties;

    @Bean
    public OpenAPI customOpenAPI()) {
        return new OpenAPI().info(new Info()
                .title(...)
                .version(buildProperties.getVersion())
                .contact(new Contact().email(buildProperties.get("developer"))));
    }
}

阅读:

希望对您有所帮助。

答案 1 :(得分:-1)

在属性上添加它,并在pom和属性文件上使用,例如:

<properties>
     <team.name>John Doe</team.name>
</properties>

用于开发者数据:

<developers>
    <developer>
        <name>${team.name}</name>
...

然后在应用程序中使用属性:

 description: "@team.name@"