如何配置由KVision间接引入的Gradle ShadowJar插件任务?
KVision间接引入ShadowJar后的配置方案
推荐方案:通过任务名称定位配置
由于KVision已经间接引入ShadowJar插件,无需手动添加插件依赖,直接通过任务名称即可完成配置:
tasks.named("shadowJar") { // 针对Flyway问题的配置示例(根据Issue #3482需求调整) manifest { attributes["Main-Class"] = "你的应用主类全限定名" } // 确保Flyway迁移脚本被正确打包 from(sourceSets.main.get().resources.srcDirs) { include("db/migration/**") } // 按需排除或包含依赖 dependencies { include(dependency("org.flywaydb:flyway-core")) } }
进阶方案:显式导入任务类型
如果需要对所有ShadowJar任务做全局配置,或创建自定义ShadowJar任务,可显式导入任务类:
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar // 全局配置所有ShadowJar任务 tasks.withType(ShadowJar::class) { // 统一添加Flyway相关配置 } // 注册自定义ShadowJar任务 tasks.register<ShadowJar>("flywayShadowJar") { // 自定义打包逻辑,比如仅包含Flyway相关资源 }
排查方案:显式声明插件ID
若上述方法无效,可在plugins块中显式声明ShadowJar插件(与KVision的间接依赖不会冲突,反而能确保任务类型被正确识别):
plugins { id("com.github.johnrengelman.shadow") version "7.1.2" // 使用与KVision兼容的版本 // 保留原有的KVision、KTor插件声明 }
核心要点
- 无需重复添加插件classpath依赖,KVision已间接引入,显式声明插件ID仅用于确保Gradle识别任务类型。
- Flyway相关的具体配置(如迁移脚本路径、依赖过滤)需结合Issue #3482的实际需求调整
from、include、exclude等参数。
内容的提问来源于stack exchange,提问作者complover116
相关产品推荐
相关产品推荐

