如何解决 Spring 引导应用程序中的 FlyWay 许可证问题

How to solve FlyWay license problem in Spring Boot Application

我的 Spring 使用 FlyWay 企业许可证的启动应用程序无法启动并显示以下消息:

Caused by: org.flywaydb.core.api.FlywayException: Missing license key. 
Ensure flyway.licenseKey is set to a valid Flyway license key ("FL01" followed by 512 hex chars)

license其实并没有丢失。我尝试将两者都设置为环境变量和 application.yml 文件,名称为 spring >> flyway >> licenseKey,但它根本没有反应。

有什么想法可以隐藏问题吗? spring boot for database 考虑了其他 env 变量,所以这不应该是问题所在。

对此有很好的讨论on GitHub。根据该问题,基于 属性 的版本似乎在 Spring Boot 2.2 的路线图上。

显然你现在需要实现一个FlywayConfigurationCustomizer(未测试):

@Configuration
public class FlywayConfiguration {
    @Bean
    public FlywayConfigurationCustomizer customizeLicense(
                 @Value("${my-app.flyway.license}") String license) {
        return new FlywayConfigurationCustomizer() {

            @Override
            public void customize(FluentConfiguration configuration) {
                configuration.licenseKey(license);
            }
        };
    }
}

我认为这可能可以简化为 lambda(也未经测试)...

@Configuration
public class FlywayConfiguration {
    @Bean
    public FlywayConfigurationCustomizer customizeLicense(
                 @Value("${my-app.flyway.license}") String license) {
        return configuration -> configuration.licenseKey(license);
    }
}