Jeśli dobrze rozumiem, mylisz Project.dependencies
blok skryptu z blokiem Project.buildscript.dependencies
skryptu (tak jak zrobiłem, kiedy dotarłem do tego pytania).
Spróbuję odpowiedzieć na to, co znalazłem.
Myślę, że powinieneś już znać Project.dependencies
blok skryptu. W tym bloku deklarujemy zależności, które są wymagane przez nasz kod źródłowy. Istnieje kilka sposobów zadeklarowania zależności, których potrzebujemy w projekcie. Zobacz samouczek Gradle: typy zależności . Wspomnę tylko o części, która jest najbardziej istotna dla tego problemu:
compile 'org.hibernate:hibernate-core:5.0.5.Final'
jest deklaracją zależności modułu. Konfiguracja kompilacji (która jest teraz przestarzała przez konfigurację implementacji) jest tylko słowem kluczowym dla Implementation only dependencies.
Nie jest to słowo kluczowe opisujące, jaki to typ zależności (według typu tutaj śledzę trzy typy zdefiniowane w samouczku, tj. Moduł, plik i projekt).
W samouczku Gradle: Organizowanie logiki kompilacji jest napisane:
Jeśli Twój skrypt kompilacji musi korzystać z bibliotek zewnętrznych, możesz dodać je do ścieżki klas skryptu w samym skrypcie kompilacji. Robi się to za pomocą metody buildscript (), przekazując zamknięcie, które deklaruje ścieżkę klasy skryptu budowania.
W ten sam sposób deklaruje się, na przykład, ścieżkę klas kompilacji języka Java. Możesz użyć dowolnego z typów zależności opisanych w typach zależności, z wyjątkiem zależności projektu.
Po zadeklarowaniu ścieżki klas skryptu kompilacji, możesz używać klas w swoim skrypcie kompilacji tak samo, jak innych klas w ścieżce klas.
Mam nadzieję, że teraz wszystko jest dla ciebie jasne.
Dzięki temu classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
ustawiamy classpath
metodę, com.android.tools.build:gradle:${Versions.android_gradle_plugin}
która jest zależnością od modułu, która jest używana przez sam skrypt kompilacji, a nie źródło w twoim projekcie.
Z drugiej strony compile 'org.hibernate:hibernate-core:5.0.5.Final'
deklarujemy zależność modułu wymaganą dla twojego projektu z konfiguracją kompilacji .
tl; dr: the classpath
, compile
i implementation
są wszystkie słowa kluczowe, które mogą być wykorzystane przeciwko zależnościami w różnych okolicznościach. Pierwsza jest używana, gdy chcesz przekazać zależność do skryptu kompilacji, a druga jest jedną z konfiguracji, które możesz chcieć zadeklarować.
classpath
nie jest prawidłowym zakresem zależności.