Spring Boot 2.7.5中如何排除Gradle引入的多余Flyway依赖
问题描述
我正在使用Spring Boot 2.7.5,手动引入了Flyway core 7.15.0依赖,用于在PostgreSQL-9.6上执行迁移脚本,但IntelliJ IDEA的外部依赖列表里却出现了未在gradle.build中声明的Flyway core 8.5.3版本,请问该如何排除这个意外引入的依赖?
迁移模块的gradle.build依赖配置:
dependencies { implementation("org.springframework.boot:spring-boot-starter-data-cassandra") implementation("org.cognitor.cassandra:cassandra-migration-spring-boot-starter:2.5.0_v4") implementation('org.springframework.boot:spring-boot-starter-data-jpa') implementation ('org.springframework.boot:spring-boot-starter-web') implementation 'org.flywaydb:flyway-core:7.15.0' }
解决方法
1. 定位依赖来源
先搞清楚是哪个第三方依赖间接引入了Flyway 8.5.3,有两种方式:
- 执行Gradle命令查看依赖树:
./gradlew dependencies --configuration runtimeClasspath | grep flyway
- 在IntelliJ IDEA中,打开
gradle.build文件,右键选择「Show Dependencies」,在弹出的依赖树里找到Flyway 8.5.3的父依赖节点。
2. 排除指定间接依赖
根据上一步找到的来源,在对应的依赖声明里添加排除规则。比如如果是spring-boot-starter-data-jpa间接引入的,就修改这个依赖的配置:
implementation('org.springframework.boot:spring-boot-starter-data-jpa') { exclude group: 'org.flywaydb', module: 'flyway-core' }
如果是其他依赖(比如cassandra的迁移starter)导致的,就对应修改那个依赖的声明即可。
3. 强制锁定版本(备选方案)
要是不想逐个排查,也可以直接在Gradle里强制指定Flyway的版本,确保整个项目统一使用7.15.0:
configurations.all { resolutionStrategy.force 'org.flywaydb:flyway-core:7.15.0' }
4. 验证结果
执行./gradlew dependencies重新检查依赖树,确认Flyway 8.5.3已经被移除,再点击IntelliJ IDEA Gradle面板的刷新按钮,同步依赖即可。
内容的提问来源于stack exchange,提问作者Taimur
相关产品推荐
相关产品推荐

