Как загрузить зависимости в gradle

У меня есть пользовательская задача компиляции.

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

Gradle не пытается загружать зависимости до его выполнения. Я не могу найти нигде имя задачи, которое делает это, чтобы добавить его в список dependOn.

Ответы

Ответ 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/'
}

Загрузите зависимости (и их зависимости) в папку runtime при выполнении gradle getDeps.

Ответ 2

Немного более легкая задача, которая необязательно копирует файлы в каталог:

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

Ответ 3

Для Intellij перейдите в "Вид"> "Окна инструментов"> "Gradle"> "Обновить все проекты" (синие круглые стрелки вверху окна Gradle. enter image description here

Ответ 4

Вы должны попробовать следующее:

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

Я искал его некоторое время назад, когда работал над проектом, в котором нам пришлось загружать все зависимости в текущий рабочий каталог в какой-то момент в нашем обеспечении script. Наверное, вы пытаетесь добиться чего-то подобного.

Ответ 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
      }
    }
  }
}

Я попытался поместить его в конфигурацию вместо действия (путем удаления doLast), и он сломал цинк. Я работал над этим, но конечный результат был таким же или без. Итак, я оставил его как явное состояние. Кажется, он работает достаточно, чтобы уменьшить зависимости, которые нужно скачать позже, но не устранить их в моем случае. Я думаю, что один из плагинов Scala добавляет зависимости позже.

Ответ 6

Я нашел этот ответ fooobar.com/questions/6943789/... также очень полезным:

gradle dependencies перечислит зависимости и загрузит их как побочный эффект.

Ответ 7

Трудно понять, что именно вы пытаетесь сделать из вопроса. Я угадаю и скажу, что вы хотите добавить дополнительную компилируемую задачу в дополнение к тем, которые предоставляются из коробки при помощи java-плагина.

Самый простой способ сделать это - это, вероятно, указать новый sourceSet, называемый 'speedTest'. Это создаст configuration, называемый "SpeedTest", который вы можете использовать, чтобы указать свои зависимости в блоке dependencies. Он также создаст для вас задачу с именем compileSpeedTestJava.

В качестве примера рассмотрим определение новых наборов источников в Документация по плагинам Java

В целом кажется, что у вас есть некоторые неправильные предположения о том, как управление зависимостями работает с Gradle. Я бы посоветовал остальным прочитать главы "Руководства по управлению зависимостями" руководства пользователя еще раз:)

Ответ 8

Нет необходимости загружать зависимости; они загружаются по требованию. Чтобы узнать, как управлять зависимостями с помощью Gradle, см. "Глава 8. Основы управления зависимостями" в Gradle Руководство пользователя.