Как загрузить зависимости в 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 Руководство пользователя.