Antwort aktualisieren gemäß den neuesten Gradle-Versionen.
Von der offiziellen Dokumentation von Gradle unter folgendem Link:
https://docs.gradle.org/current/userguide/upgrading_version_5.html
Veraltungen
Abhängigkeiten sollten nicht mehr mithilfe der Konfigurationen compile und runtime deklariert werden. Die Verwendung der Konfigurationen compile und runtime in den Java-Ökosystem-Plugins wird seit Gradle 3.4 entmutigt.
Die Konfigurationen implementation, api, compileOnly und runtimeOnly sollten verwendet werden, um Abhängigkeiten zu deklarieren, und die Konfigurationen compileClasspath und runtimeClasspath, um Abhängigkeiten aufzulösen.
Zudem wurde die Kompilierabhängigkeitskonfiguration in der kürzlich veröffentlichten Gradle-Version 7.0 entfernt.
Wenn Sie versuchen, compile in Ihrem Gradle 3.4+-Projekt zu verwenden, erhalten Sie eine Warnung wie diese:
Veraltete Gradle-Funktionen wurden beim Erstellen verwendet und sind daher nicht kompatibel mit Gradle 7.0. Verwenden Sie ‘–warning-mode all’, um die einzelnen Veraltungs warnungen anzuzeigen.
Sie sollten immer implementation anstelle von compile für Abhängigkeiten verwenden und runtimeOnly anstelle von runtime.
Was ist eine Implementierungsabhängigkeit?
Wenn Sie ein Java-Projekt erstellen und ausführen, sind zwei Klass Pfade beteiligt:
Kompilierungsklassenpfad – Diese Abhängigkeiten sind erforderlich, damit das JDK Java-Code in .class-Dateien kompilieren kann.
Ausführungsklassenpfad – Diese Abhängigkeiten sind erforderlich, um den kompilierten Java-Code tatsächlich auszuführen.
Beim Konfigurieren von Gradle-Abhängigkeiten konfigurieren wir nur, welche Abhängigkeiten auf welchem Klassenpfad erscheinen sollen. Da es nur zwei Klassenpfade gibt, ergibt es Sinn, dass wir drei Optionen haben, um unsere Abhängigkeiten zu deklarieren.
- compileOnly – Die Abhängigkeit nur auf den Kompilierungsklassenpfad setzen.
- runtimeOnly – Die Abhängigkeit nur auf den Ausführungsklassenpfad setzen.
- implementation – Die Abhängigkeit auf beide Klassenpfade setzen.
Verwenden Sie die Implementierungsabhängigkeitskonfiguration, wenn Sie möchten, dass die Abhängigkeit auf beiden Kompilierungs- und Ausführungsklassenpfaden vorhanden ist. Andernfalls sehen Sie sich compileOnly oder runtimeOnly an.