如何构建基于java的flyway迁移

时间:2015-11-04 15:47:47

标签: java flyway

我使用flyway命令行工具来处理我的数据库迁移。 到目前为止,所有迁移都是sql

配置文件(仅使用选项):

flyway.url=jdbc:postgresql://db.host
flyway.user=user
flyway.password=password

flyway.table=flyway_migrations

flyway.locations=filesystem:/home/........./sql/migrations

flyway.sqlMigrationPrefix=update
flyway.validateOnMigrate=false
flyway.outOfOrder=true

完美无缺。

但是现在我需要添加一个基于java的迁移。我真的很困惑 我无法找到任何如何做的例子。如何编译,在哪里放置java迁移。

我从官方文档中尝试过简单的迁移类:

package db.migration;

import org.flywaydb.core.api.migration.jdbc.JdbcMigration;
import java.sql.Connection;
import java.sql.PreparedStatement;

/**
 * Example of a Java-based migration.
 */
public class V50_121_1__update_notes implements JdbcMigration {
    public void migrate(Connection connection) throws Exception {
        PreparedStatement statement =
            connection.prepareStatement("INSERT INTO test_user (name) VALUES ('Obelix')");

        try {
            statement.execute();
        } finally {
            statement.close();
        }
    }
}

但接下来该怎么办? 尝试编译:

javac -cp "./flyway-core-3.2.1.jar" V50_121_1__update_notes.java
jar cf V50_121_1__update_dataNode_notes.jar V50_121_1__update_dataNode_notes.class

然后把那个罐子放到不同的位置,没有效果。

flyway信息 - 没有看到迁移。

那么如何构建最简单的基于java的迁移。我宁愿不使用Maven或类似的东西。简单的jar文件(???)由flyway命令行工具选取。

谢谢。

2 个答案:

答案 0 :(得分:2)

确保.class文件位于.jar文件文件中的db / migration目录中,并且.jar文件放在Flyway安装的/ jars目录中。

flyway.locations也应该设置为db.migration,filesystem:/ home / .pr。/ sql / migrations

答案 1 :(得分:0)

将.java文件指定为.java como 类路径:package_example.migrations

flyway.url = jdbc:postgresql://db.host flyway.user =用户 flyway.password =密码

flyway.table = flyway_migrations

flyway.locations =文件系统:/ home /...../ sql / migrations,类路径:pack_example.migrations

flyway.sqlMigrationPrefix =更新 flyway.validateOnMigrate = false flyway.outOfOrder = true

查看文档链接 https://flywaydb.org/documentation/commandline/migrate