如何在不实际构建内容的情况下制作 gradle 下载依赖项

2022-09-01 21:02:54

在新环境中需要相当长的时间,因为必须下载所有依赖项。gradle build

有没有办法只下载依赖项以加快以下构建速度?

这样,例如,我们已经预填充了CI构建环境。


答案 1

编辑:针对 Gradle 6+ 进行了更新。

一些注意事项:

  • 这种新方法将 jar 下载到一个文件夹中,然后删除该文件夹。因此,将 jar 放在 Gradle 缓存中的结果是一个副作用。
  • 它目前使用为源代码集配置的jar,但可以通用化。main
  • 尽管它既不高效也不优雅,但如果您真的想要jar(和传递依赖项),它可能会很有用:只需注释掉文件夹的删除即可。runtime

当您需要jar(和传递依赖项)时,此解决方案可能很方便,因为您只需要注释掉删除文件夹即可。

考虑一下(作为一个任意的,具体的例子):build.gradle

apply plugin: 'java'

dependencies {
    implementation 'org.apache.commons:commons-io:1.3.2'
    implementation 'org.kie.modules:org-apache-commons-lang3:6.2.0.Beta2'
}

repositories { 
   jcenter()
}

task getDeps(type: Copy) {
    from sourceSets.main.runtimeClasspath
    into 'runtime/'

    doFirst {
        ant.delete(dir: 'runtime')
        ant.mkdir(dir: 'runtime')
    }

    doLast {
        ant.delete(dir: 'runtime')
    }
}

示例运行:

$ find /Users/measter/.gradle/caches -name "commons-io*1.3.2.jar"

$ gradle getDeps

$ find /Users/measter/.gradle/caches -name "commons-io*1.3.2.jar"
/Users/measter/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/1.3.2/[snip]/commons-io-1.3.2.jar

答案 2

我发现(正如这位用户所建议的)对于Docker构建非常方便。./gradlew dependencies


推荐