Wenn ich das richtig verstehe, verwechseln Sie den Skriptblock Project.dependencies
mit dem Project.buildscript.dependencies
Skriptblock (genau wie bei der Beantwortung dieser Frage).
Ich werde versuchen, dies mit dem zu beantworten, was ich gefunden habe.
Ich denke, Sie sollten bereits mit dem Project.dependencies
Skriptblock vertraut sein . In diesem Block deklarieren wir Abhängigkeiten, die von unserem Quellcode benötigt werden. Es gibt verschiedene Möglichkeiten, eine Abhängigkeit zu deklarieren, die wir für das Projekt benötigen. Siehe Gradle-Tutorial: Abhängigkeitstypen . Ich werde nur den Teil erwähnen, der für dieses Problem am relevantesten ist:
compile 'org.hibernate:hibernate-core:5.0.5.Final'
ist eine Modulabhängigkeitsdeklaration. Die Kompilierungskonfiguration (die jetzt von der Implementierungskonfiguration nicht mehr unterstützt wird) ist lediglich ein Schlüsselwort für. Implementation only dependencies.
Es ist kein Schlüsselwort, das beschreibt, um welche Art von Abhängigkeit es sich handelt (nach Typ folge ich hier den drei im Lernprogramm definierten Typen, dh Modul, Datei und Projekt.)
Im Gradle-Tutorial: Organisieren der Build-Logik heißt es:
Wenn Ihr Build-Skript externe Bibliotheken verwenden muss, können Sie diese dem Klassenpfad des Skripts im Build-Skript selbst hinzufügen. Sie tun dies mit der Methode buildcript () und übergeben einen Abschluss, der den Klassenpfad des Erstellungsskripts deklariert.
Auf diese Weise deklarieren Sie beispielsweise den Java-Kompilierungsklassenpfad. Sie können jeden der unter Abhängigkeitstypen beschriebenen Abhängigkeitstypen verwenden, mit Ausnahme der Projektabhängigkeiten.
Nachdem Sie den Klassenpfad des Erstellungsskripts deklariert haben, können Sie die Klassen in Ihrem Erstellungsskript wie alle anderen Klassen im Klassenpfad verwenden.
Ich hoffe, die Dinge werden Ihnen jetzt klar.
Mit setzen classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
wir eine classpath
Methode, bei com.android.tools.build:gradle:${Versions.android_gradle_plugin}
der es sich um eine Modulabhängigkeit handelt, die vom Build-Skript selbst und nicht von der Quelle in Ihrem Projekt verwendet wird.
Auf der anderen Seite, mit compile 'org.hibernate:hibernate-core:5.0.5.Final'
uns eine Modul Abhängigkeit , die für Ihr Projekt mit der Kompilierung sind erklärt Konfiguration .
tl; dr: Die classpath
, compile
und implementation
sind alle Schlüsselwörter , die gegen Abhängigkeiten unter verschiedenen Umständen verwendet werden kann. Ersteres wird verwendet, wenn Sie eine Abhängigkeit an das Build-Skript übergeben möchten, und letzteres ist eine der Konfigurationen, die Sie möglicherweise deklarieren möchten.
classpath
ist kein gültiger Abhängigkeitsbereich.