Flyway Core 和 Flyway Maven Plugin 有什么区别?

What is the difference between Flyway Core and Flyway Maven Plugin?

我在 Spring-Boot 项目中使用 Flyway

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

和我 运行 讨论了一些有趣的问题。

在我迁移失败之前(由于架构语法中的拼写错误),整个过程都运行良好。我尝试 运行 fly:repair 但出现此错误

Failed to execute goal org.flywaydb:flyway-maven-plugin:6.4.1:repair (default-cli) on project springboot: org.flywaydb.core.api.FlywayException: Unable to connect to the database. Configure the url, user and password!

现在,奇怪的是我不明白的是,如果我将所有信息添加到 pom.xml

<properties>
        <flyway.user>databaseUser</flyway.user>
        <flyway.password>databasePassword</flyway.password>
        <flyway.url>urlAddress</flyway.url>
</properties>

它建立了。但是如果我将信息添加到我的 application.properties 文件

spring.flyway.user=databaseUser
spring.flyway.password=databasePassword
spring.flyway.url=urlAddress

出现同样的错误信息。

根据Baedlung Database Migrations with Flyway(他们使用的是 Flyway Maven Plugin),你在哪里配置 Flyway 并不重要。 所以我想知道我是否应该切换到 flyway-maven-plugin?我真的很想在 .properties 文件中进行所有配置。

第一件事:Flyway-core 通过 Java 编程代码进行数据库迁移。

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>7.0.0</version>
</dependency>
import org.flywaydb.core.Flyway;

...
Flyway flyway = Flyway.configure().dataSource(url, user, password).load();
flyway.migrate();

// Start the rest of the application (incl. Hibernate)
...

第二件事:Flyway-plugin Maven 目标,运行 by command-line。

<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>4.0.3</version> 
</plugin>

mvn clean flyway:migrate -Dflyway.configFile=myFlywayConfig.properties

您可以根据自己的喜好选择第一件事或第二件事(通过 Java 代码或命令进行数据库迁移)