如何在gradle中下载依赖项

How to download dependencies in gradle


如何在gradle中下载依赖项 已获得8个解决方法 2020-08-18 22:06:26 gradle

我有一个自定义的编译任务.

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

Gradle在执行之前不会尝试下载依赖项.我在任何地方都找不到任务名称来将其添加到列表依赖项中.


如何在gradle中下载依赖项 方法1

下载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/'
}

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


如何在gradle中下载依赖项 方法2

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

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

更新为kotlin & gradle 6.2.0:

fun Configuration.isDeprecated() = this is DeprecatableConfiguration && resolutionAlternatives != null

tasks.register("downloadDependencies") {
  doLast {
    configurations
      .filter { it.isCanBeResolved && !it.isDeprecated() }
      .forEach { it.resolve() }
  }
}

如何在gradle中下载依赖项 方法3

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


如何在gradle中下载依赖项 方法4

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

gradle dependencies 将列出依赖项并将其作为副作用下载.


如何在gradle中下载依赖项 方法5

这个版本建立在罗伯特 · 埃利奥特的基础上,但我不是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
      }
    }
  }
}

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


如何在gradle中下载依赖项 方法6

你应该试试这个:

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

前一段时间,当我在一个项目上工作时,我一直在寻找它,在这个项目中,我们必须在配置脚本的某个时候将所有依赖项下载到当前的工作目录中.我猜你在努力实现类似的目标.


如何在gradle中下载依赖项 方法7

很难从这个问题中弄清楚你到底想做什么.我猜测一下,除了java插件提供的任务之外,您还想添加一个额外的编译任务.

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

Java插件文档为例,看看定义新源集

总的来说,你似乎对依赖管理如何与Gradle一起工作有一些不正确的假设.我会重复其他人的建议,再次阅读用户指南的 “依赖管理” 章节 :)


如何在gradle中下载依赖项 方法8

没有下载依赖项的任务; 它们是按需下载的.有关使用Gradle进行依赖管理的方法,请参见Gradle用户指南中的 “第8章依赖管理基础”.


.htaccess .net .net-core 2d 3d 3d-printing ab-initio abp abstract-syntax-tree actions-on-google actionscript-3 active-directory activemq activemq-artemis acumatica adobe-xd aframe ag-grid agora.io air airflow ajax akka alert alexa algorithm alignment allure amadeus amazon-cloudformation