flyway POM.XML 中的默认占位符
Posted
技术标签:
【中文标题】flyway POM.XML 中的默认占位符【英文标题】:flyway Default placeholders in POM.XML 【发布时间】:2021-07-17 12:49:12 【问题描述】:我可以在 POM.XML 中使用飞行路径“默认占位符”吗?例如 $flyway.url、$flyway.user 和 $flyway.password ? Flyway 会在 maven 执行 pom 之前在运行时将这些占位符替换为 application.properties 或 application.yaml 文件中定义的值吗?
<build>
<plugins>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>5.2.4</version>
<configuration>
<url>$flyway.url</url>
<user>$flyway.user</user>
<password>$flyway.password</password>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>$oracle.version</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
【问题讨论】:
【参考方案1】:在 Maven 和 Spring 之间共享配置的最简单方法可能如下:
src/main/resources/application.properties
spring.flyway.username=$flyway.username
spring.flyway.password=$flyway.password
...
flyway.username=user
flyway.password=SecretPa$$word
pom.xml
<properties>
<flyway.configFiles>$project.baseDir/src/main/resources/application.properties</flyway.configFiles>
</properties>
或者,您可以使用 Properties Maven 插件:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>$project.baseDir/src/main/resources/application.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
如果您想在单独的 .properties
文件中拥有 Flyway 属性,您还可以对 application.properties/application.yaml
文件使用 Maven 资源过滤。
【讨论】:
application.properties 中 spring.flyway.username=$flyway.username 和 spring.flyway.password=$flyway.password 的作用是什么? Spring Boot 使用spring.flyway.*
属性,而 Maven 插件只需要 flyway.*
。此设置同时满足以上是关于flyway POM.XML 中的默认占位符的主要内容,如果未能解决你的问题,请参考以下文章