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 中的默认占位符的主要内容,如果未能解决你的问题,请参考以下文章

使用 flyway 占位符生成 sql 语句

Flyway 数据库迁移中占位符的用途

占位符如何在 Flyway 中工作?

Flyway 以编程方式设置占位符

Flyway 是不是有我们可以在 SQL 迁移中使用的“数据库名称”占位符?

spring xml中的默认占位符值