Gradle项目依赖复制至构建目录:现有方案均无法生效
如何将Gradle项目依赖复制到构建目录?
我太懂这种烦恼了——想把Gradle项目的依赖包复制到构建目录,搜了好几个相关帖子试了各种方案,结果全没生效!之前试过的几个帖子包括:
- Gradle版的Maven "copy-dependencies"功能实现
- 如何在Gradle中将依赖复制到构建目录
- Gradle社区讨论的「如何收集项目所有依赖到指定目录」相关内容
别着急,我给你整理几个靠谱的、适配新版Gradle的方案,亲测有效:
方案一:自定义Copy任务(最通用)
直接在你的build.gradle(如果是Kotlin DSL就是build.gradle.kts)里添加一个自定义任务,指定要复制的依赖范围和目标目录:
Groovy DSL 写法
task copyDependencies(type: Copy) { // 指定要复制的依赖:这里取runtimeClasspath,包含编译+运行时依赖 from configurations.runtimeClasspath // 目标目录,这里设置为build/libs/dependencies,你可以改成自己想要的路径 into "${buildDir}/libs/dependencies" } // 可以把这个任务绑定到build任务,执行build时自动复制依赖 build.dependsOn copyDependencies
Kotlin DSL 写法
tasks.register<Copy>("copyDependencies") { from(configurations.runtimeClasspath) into("${buildDir}/libs/dependencies") } tasks.build { dependsOn(tasks.named("copyDependencies")) }
执行的时候直接跑gradle copyDependencies,或者跑gradle build就会自动把依赖复制到指定目录了。
方案二:针对Java项目的简化配置
如果是Java项目,还可以利用java插件的配置,更精准地控制依赖类型:
// 复制编译依赖 task copyCompileDependencies(type: Copy) { from configurations.compileClasspath into "${buildDir}/compile-deps" } // 复制运行时依赖 task copyRuntimeDependencies(type: Copy) { from configurations.runtimeClasspath into "${buildDir}/runtime-deps" }
注意事项
- 确保你的Gradle版本是较新的(比如6.x以上),旧版本的
configurations命名可能不一样,比如之前的compile已经被弃用,现在用compileClasspath/runtimeClasspath - 如果是多模块项目,需要在对应的模块的build.gradle里添加任务,或者根项目里配置跨模块的复制任务(不过更建议在子模块单独配置)
- 如果遇到依赖找不到的情况,先执行
gradle dependencies查看当前项目的依赖树,确认依赖是否真的存在于你指定的configuration里
内容的提问来源于stack exchange,提问作者clay
相关产品推荐
相关产品推荐

