Gradle 项目:将依赖项复制到构建目录

cla*_*lay 1 gradle

如何将项目的依赖项复制到构建目录?

这是一个很常见的问题。我搜索并发现许多线程可以回答这个确切的问题,但没有一个解决方案有效。这里有三个线程(有些已经很旧了),它们提供了我无法工作的解决方案。

Gradle相当于Maven的“复制依赖项”?

如何将依赖项复制到 Gradle 中的 Build 目录

https://discuss.gradle.org/t/how-can-i-gather-all-my-projects-dependency-into-a-folder/7146

仅供参考,我已经尝试过:

task copyDependencies(type: Copy) {
   from configurations.compile
   into 'dependencies'
}

task copyDependencies2(type: Copy) {
    from project.configurations.compile
    into project.buildDir
}

project.copy {
    from project.configurations.compile
    into project.buildDir
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我更喜欢当前推荐的最佳实践方法,而不是旧的已弃用的方法。我仍然使用当前的 Gradle,在撰写本文时当前版本为 4.7。

cla*_*lay 5

好的,在玩了几个小时之后,我有了一个可行的解决方案。这与旧的解决方案有很大不同,旧的解决方案似乎不适用于当前版本的 Gradle。这个适用于 Gradle 4.7:

task jarWithDeps(dependsOn: 'jar', type: Copy) {
  def conf = configurations.runtimeClasspath
  from conf.allDependencies.collect { conf.files(it) }
  into "${project.buildDir}/libs"
}
Run Code Online (Sandbox Code Playgroud)