Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该将flyway绑定到哪个maven阶段:迁移目标?_Maven_Flyway - Fatal编程技术网

我应该将flyway绑定到哪个maven阶段:迁移目标?

我应该将flyway绑定到哪个maven阶段:迁移目标?,maven,flyway,Maven,Flyway,我使用Flyway使我的DB模式保持最新。我希望使用flyway的maven插件将此作为构建生命周期中的一个步骤进行自动化,该插件将执行该目标 我应该将这个目标绑定到哪个maven阶段?我很困惑,因为这有几个不同的用例 我希望我的测试数据库在每次测试运行时都被完全销毁和重建,因此在测试阶段执行一次插件是有意义的 在我的开发环境中,我希望在每次构建项目时迁移(而不是重建!),以保持模式的最新。我能把这个绑在包装?还是编译 在我的生产环境中我同样希望再次运行迁移,但在我的生产数据库上。这甚至应该是自

我使用Flyway使我的DB模式保持最新。我希望使用flyway的maven插件将此作为构建生命周期中的一个步骤进行自动化,该插件将执行该目标

我应该将这个目标绑定到哪个maven阶段?我很困惑,因为这有几个不同的用例

  • 我希望我的测试数据库在每次测试运行时都被完全销毁和重建,因此在
    测试
    阶段执行一次插件是有意义的

  • 在我的开发环境中,我希望在每次构建项目时迁移(而不是重建!),以保持模式的最新。我能把这个绑在<代码>包装?还是编译

  • 在我的生产环境中我同样希望再次运行迁移,但在我的生产数据库上。这甚至应该是自动化的,还是应该手动运行?如果它应该是自动化的,它会是部署阶段的一部分吗


  • 谢谢

    通常,您希望在运行时运行数据库迁移,而不是在使用Maven构建项目时运行

    要在运行时运行迁移,请参阅官方文档:。它提供了几种配置方法:

    程序配置
    导入org.flywaydb.core.Flyway;
    ...
    Flyway Flyway=Flyway.configure().dataSource(url、用户、密码).load();
    flyway.migrate();
    //启动应用程序的其余部分(包括Hibernate)
    ...
    
    弹簧配置
    
    ...
    ...
    
    关于你的第1部分。我建议使用集成测试阶段,如
    集成前测试
    集成测试
    集成后测试
    ,因为这些都是集成测试,而不是单元测试..而且它更适合集成测试的各个部分..除此之外,听起来好像您弄错了构建时间和运行时间..谢谢,在我发布这个问题后,我意识到我把构建时间和运行时间混为一谈了。感谢你的意见。