gpt4 book ai didi

java - 带有 Flyway 4.2.0 的 Spring Boot 2.1.0

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:57 24 4
gpt4 key购买 nike

我想将我的新项目升级到 Spring Boot 版本 2.1.0,但我受限于 Flyway 4.2.0 库支持的 Oracle 11 数据库。一切在 Spring Boot 2.0.5 版本上正常运行,但是当移动到 2.1.0 版本时我得到这个错误:

java.lang.NoClassDefFoundError: 
org/flywaydb/core/api/configuration/FluentConfiguration

POM配置如下:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<ojdbc6.version>11.2.0.1</ojdbc6.version>
</properties>

<dependencies>
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>${ojdbc6.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>4.2.0</version>
</dependency>
</dependencies>

更新

我可以通过@Configuration(或者当然添加到主类)来解决问题,但问题是它是错误还是功能?在 2.1.0 版之前,一切都是通过自动配置完成的,开箱即用。

@Bean(initMethod = "migrate")
Flyway flyway() {
Flyway flyway = new Flyway();
flyway.setBaselineOnMigrate(true);
flyway.setDataSource("jdbc:oracle:thin:@localhost:1521:xe", "USER", "PASSWORD1");
return flyway;
}

最佳答案

我在 PostgreSQL 9.2 上遇到了同样的问题,使用下面的类解决了这个问题。

请注意,您可能在 Spring Boot 属性中设置的所有自定义属性都将被忽略,因为这会替换您自己的整个 Flyway 自动配置。因此,您可能需要添加一些额外的代码来满足您的需求。

@Configuration
class FlywayConfig {
@Bean
fun flyway(dataSource: DataSource): Flyway {
val flyway = Flyway()
flyway.dataSource = dataSource
return flyway
}

@Bean
fun flywayInitializer(flyway: Flyway): FlywayMigrationInitializer {
return FlywayMigrationInitializer(flyway, null)
}

/**
* Additional configuration to ensure that [EntityManagerFactory] beans depend on the
* `flywayInitializer` bean.
*/
@Configuration
class FlywayInitializerJpaDependencyConfiguration : EntityManagerFactoryDependsOnPostProcessor("flywayInitializer")
}

PS:这是 Kotlin 代码,但您应该能够很容易地将它翻译成 Java。

关于java - 带有 Flyway 4.2.0 的 Spring Boot 2.1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53343506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com