如何在gradle中下载依赖项

时间:2014-02-16 17:19:39

标签: gradle

我有一个自定义编译任务。

task compileSpeedTest(type: JavaCompile) {
    classpath = files('build')
    source = fileTree('src/test/java/speed')
    destinationDir = file('bin')
}

Gradle在执行之前不会尝试下载依赖项。 我找不到一个任务名称,它将它添加到列表dependsOn上。

9 个答案:

答案 0 :(得分:40)

如果您确实需要将它们下载到文件夹中,则可以下载Java依赖项。

示例:

apply plugin: 'java'

dependencies {
  runtime group: 'com.netflix.exhibitor', name: 'exhibitor-standalone', version: '1.5.2'
  runtime group: 'org.apache.zookeeper',  name: 'zookeeper', version: '3.4.6'
}

repositories { mavenCentral() }

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

执行runtime时,将依赖项(及其依赖项)下载到文件夹gradle getDeps

答案 1 :(得分:10)

稍微轻松的任务,不会不必要地将文件复制到目录:

task downloadDependencies(type: Exec) {
    configurations.testRuntime.files
    commandLine 'echo', 'Downloaded all dependencies'
}

答案 2 :(得分:7)

对于Intellij,请转到查看>工具窗口> Gradle>刷新所有项目(Gradle窗口顶部的蓝色圆形箭头。 enter image description here

答案 3 :(得分:6)

你应该尝试这个:

task getDeps(type: Copy) {
    from configurations.runtime
    into 'runtime/'
}

我在寻找它的时候正在寻找一个项目,我们必须在我们的配置脚本中的某个时刻将所有依赖项下载到当前工作目录中。我想你正在努力实现类似的目标。

答案 4 :(得分:3)

我发现这个答案https://stackoverflow.com/a/47107135/3067148也非常有帮助:

  

gradle dependencies将列出相关性并将其下载为   副作用。

答案 5 :(得分:2)

这个版本建立在Robert Elliot的基础之上,但我并不是100%肯定它的功效。

// There are a few dependencies added by one of the Scala plugins that this cannot reach.
task downloadDependencies {
  description "Pre-downloads *most* dependencies"
  doLast {
    configurations.getAsMap().each { name, config ->
      println "Retrieving dependencies for $name"
      try {
        config.files
      } catch (e) {
        project.logger.info e.message // some cannot be resolved, silentlyish skip them
      }
    }
  }
}

我尝试将其置于配置而不是动作(通过删除doLast)并且它破坏了锌。我解决了这个问题,但最终结果是否相同。所以,我把它留作了一个明确的状态。它似乎足以减少以后必须下载的依赖项,但在我的情况下不能消除它们。我认为其中一个Scala插件会在以后添加依赖项。

答案 6 :(得分:0)

很难弄清楚你想从问题中做些什么。我会猜测并说除了java插件提供的那些之外你还要添加一个额外的编译任务。

最简单的方法是指定一个名为“speedTest”的新sourceSet。这将生成一个名为'speedTest'的configuration,您可以使用它来指定dependencies块中的依赖项。它还会为您生成一个名为compileSpeedTestJava的任务。

例如,请查看defining new source sets

中的Java plugin documentation

通常,您似乎对依赖关系管理如何与Gradle一起使用有一些不正确的假设。我会回应其他人的建议,再次阅读用户指南的“依赖管理”章节:)

答案 7 :(得分:0)

我认为 Gradle 没有特定的 task 来下载依赖项。但是,必须以某种方式下载依赖项。否则无法编译项目。

我注意到当您运行 compile 任务时,Gradle也会下载依赖项。

因此,最接近下载依赖项的 taskcompile 任务。例如,compileKotlincompileJava

答案 8 :(得分:-5)

没有任务可以下载依赖项;它们是按需下载的。要了解如何使用Gradle管理依赖关系,请参阅Gradle User Guide中的“第8章依赖关系管理基础知识”。