Может кто-нибудь объяснить мне, как зависимости, перечисленные в «buildscript» в файле build.gradle, отличаются от обычных зависимостей, перечисленных в блоке зависимостей {}?
Зависимости, определенные в блоке buildscript { }
, являются зависимостями, используемыми для построения вашего проекта. Эти зависимости доступны для использования в файле сборки Gradle (build.gradle
или build.gradle.kts
)
Зависимости, определенные в dependencies { }
, относятся к вашему коду приложения .
Так что для ваших примеров в ваших вопросах имеет смысл для Gradle (системы сборки) иметь iot-device-client
на своем пути к классам? Почему системе сборки требуется iot-device-client
на своем пути к классам для сборки вашего проекта? Это не имеет смысла, поэтому его следует удалить.
Теперь предположим, что вы разрабатываете приложение, требующее некоторой функциональности или класса из iot-device-client
. Вам нужен способ добавить эту библиотеку в код / путь к вашему приложению. Затем вы объявляете его как зависимость, как вы это делали выше:
dependencies {
implementation("com.microsoft.azure.sdk.iot:iot-device-client:1.16.0")
}
Ссылки:
и почему они должны быть перечислены с синтаксисом "реализация"?
implementation
известно как конфигурация : A Configuration
представляет группу артефактов и их зависимостей
Существует много других конфигураций в зависимости от плагинов, которые вы применить к вашему проекту. Например, если вы примените плагин Java :
plugins {
id("java")
}
Доступны следующие конфигурации:
- реализация
- compileOnly
- compileClasspath
- ... и многие другие
Каждый из них имеет свое значение / использование, и я настоятельно рекомендую прочитать о них здесь .