一尘不染

在Spring Boot中在application.properties中使用Maven属性

spring-boot

我正在尝试将pom.xml中的属性加载到application.properties中。我想创建两个配置文件:dev和prod使用不同的数据库URL。我使用Jenkins作为CI,在我所有的应用程序(主要是Spring
MVC,没有Boot项目)中,都使用maven配置文件部署到Tomcat。有没有可能使用maven属性来执行此操作?我尝试过这样的事情:
spring.datasource.url=${jdbc.url}


阅读 649

收藏
2020-05-30

共1个答案

一尘不染

在执行此操作之前,请考虑将属性文件从可部署包中外部化。这样,您可以在每个环境上部署相同的编译。它将为您的詹金斯节省一些实际上不必要的工作。最佳实践是只构建一次应用程序,但是,如果您不相信,请按以下步骤操作。

  1. pom.xml中 ,为属性定义具有适当值的配置文件。
<profile>
<id>dev</id>
<properties>
   <jdbc.url>your_dev_URL</jdbc.url>
</properties>
</profile>
  1. 设置Maven资源插件以过滤包含 application.properties 文件的目录。
<build>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
...
</build>
  1. 如果使用Spring Boot 1.3或更高版本,则应注意以下事实:为避免Spring Boot占位符与Maven资源插件过滤的令牌之间的冲突,框架引入了一种解决方案,该解决方案要求对过滤后的值使用不同的语法

现在,${property.key}您应该使用@property.key@。在这种情况下,您的 application.properties
必须包含以下示例才能按预期工作:

    spring.datasource.url=@jdbc.url@

您还可以查看有关为不同的Maven配置文件分离Spring属性文件的文章。这样,您将外部化pom.xml中的值。

2020-05-30