Якщо я правильно розумію, ви плутаєте Project.dependencies
блок сценарію з блоком Project.buildscript.dependencies
сценарію (як і я, коли дійшов до цього запитання).
Я спробую відповісти на це тим, що знайшов.
Я думаю, ви вже повинні бути знайомі з Project.dependencies
блоком сценаріїв. У цьому блоці ми оголошуємо залежності, які вимагає наш вихідний код. Є кілька способів оголосити залежність, яка нам потрібна для проекту. Див. Підручник Gradle: Типи залежностей . Я згадаю лише ту частину, яка є найбільш відповідною до цієї проблеми:
compile 'org.hibernate:hibernate-core:5.0.5.Final'
- це декларація про залежність модуля. Конфігурація компіляції (яка зараз застаріла конфігурацією реалізації.) - це просто ключове слово. Implementation only dependencies.
Це не ключове слово, що описує, який тип залежності це (за типом тут я дотримуюся трьох типів, визначених у навчальному посібнику, тобто модуля, файл і проект.)
У підручнику Gradle: Організація побудови логіки сказано:
Якщо для сценарію збірки потрібно використовувати зовнішні бібліотеки, ви можете додати їх до шляху до класу сценарію в самому сценарії збірки. Ви робите це за допомогою методу buildscript (), передаючи закриття, яке оголошує шлях до сценарію побудови.
Це так само, як ви оголошуєте, наприклад, шлях до класу компіляції Java. Ви можете використовувати будь-який із типів залежностей, описаних у типах залежностей, крім проектних.
Оголосивши шлях до класу сценарію збірки, ви можете використовувати класи у своєму сценарії збірки, як і будь-які інші класи на шляху до класу.
Сподіваюсь, зараз для вас все стає зрозумілішим.
З classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
ми встановлюємо classpath
метод з com.android.tools.build:gradle:${Versions.android_gradle_plugin}
який являє собою залежність модуля , який використовується сам скрипт збірки , а не джерело в вашому проекті.
З іншого боку, compile 'org.hibernate:hibernate-core:5.0.5.Final'
ми оголошуємо залежність модуля, необхідну для вашого проекту, з конфігурацією компіляції .
tl; dr: The classpath
, compile
і - implementation
це всі ключові слова, які можна використовувати проти залежностей за різних обставин. Перший використовується, коли ви хочете передати залежність до сценарію збірки, а другий - одна з конфігурацій, яку ви можете оголосити.
classpath
не є допустимою областю залежностей.