You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在build.gradle中编写Task按需复制指定文件名格式的依赖包?

如何在build.gradle中编写Task按需复制指定文件名格式的依赖包?

我完全懂你的困扰!之前的Task把所有依赖一股脑复制进去,连项目自身的编译产物都混在里面,确实没必要。咱们可以修改saveDependencies任务,精准筛选出你需要的Kotlin相关依赖jar包,解决那个kotlin/jvm/internal/Intrinsics的类找不到问题。

你可以把Task改成这样:

tasks.register('saveDependencies', Copy) {
    // 只针对运行时依赖配置,避免引入编译时仅需的依赖
    from configurations.runtimeClasspath
    // 筛选文件名以"kotlin"开头、以".jar"结尾的文件
    include "kotlin*.jar"
    into "build/libs"
}

简单解释下调整点:

  • 换掉原来遍历所有configurations的逻辑,直接用configurations.runtimeClasspath,这是Lambda运行时真正需要的依赖集合,避免把编译阶段才用的依赖也复制进去;
  • 通过include "kotlin*.jar"来精准匹配文件名,*是通配符,能匹配所有以kotlin开头、.jar结尾的依赖包,比如kotlin-stdlib-1.9.20.jar这类标准库文件;
  • 保持输出目录into "build/libs"不变,这样你后续Docker构建时就能直接从这个目录取到需要的Kotlin依赖了。

运行这个Task后,去build/libs目录看看,应该就只有你需要的Kotlin相关jar包,不会再混入项目自身的编译产物或者其他无关依赖,这样AWS Lambda运行时就能找到Kotlin标准库类,解决那个NoClassDefFoundError啦!

备注:内容来源于stack exchange,提问作者atkayla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:23:02