Verständnis des Abhängigkeitsmanagements in Gradle
Repositorys werden in Gradle für das Abhängigkeitsmanagement verwendet. Gradle-Abhängigkeiten bestehen aus zwei Komponenten: Abhängigkeiten und Veröffentlichungen des Projekts.
Wenn Sie ein Projekt auf Gradle erstellen, benötigen Sie wahrscheinlich Bibliotheken von anderen Entwicklern. Angenommen, Sie benötigen die Apache Commons Lang-Bibliothek für spezielle String-Manipulationen. Sie benötigen es also in Ihrem Klassenpfad, damit Ihr Code funktioniert. Und Apache Commons Lang benötigt möglicherweise zusätzliche Bibliotheken, die Ihnen nicht bekannt sind. Gradle ermöglicht es Ihnen, die jeweilige Abhängigkeit zu bestimmen, die Ihr Projekt benötigt, und es wird in das angegebene Repository wie Maven oder Ivy gehen und alle zugehörigen Abhängigkeiten ermitteln und die Dateien herunterladen und automatisch für Sie einrichten.
Gradle hat auch die Möglichkeit, Ihre Artefakte zu veröffentlichen. Sie können entscheiden, was eine Veröffentlichung für Ihren speziellen Fall bedeutet. Sie können es lokal veröffentlichen oder in einem Maven- oder Ivy-Repository veröffentlichen.
Beispiel für ein Gradle-Repository
Angenommen, wir möchten die StringUtils-Klasse aus der Apache Commons Lang-Bibliothek verwenden. Lassen Sie uns einen Regisseur wie diesen einrichten:
Hallo Welt|-- bauen.gradle
'-- src
|-- Hauptsache
'--java
'-- Hallo Welt
'-- Hallo Welt.Java
In der halloworld.java können Sie folgenden Code eingeben:
Importorganisation.Apache.Gemeingüter.lang3.StringUtils;öffentliche Klasse halloworld
public static void main(String[] args)
String Greetings = "Hallo Welt!";
System.aus.println(Grüße);
System.aus.println(StringUtils.swapCase (Grüße));
Und im Build.gradle-Datei können Sie Folgendes einfügen:
Plugin anwenden: 'java'Version = '1.0'
Repositorys
mavenCentral()
Abhängigkeiten
Gruppe kompilieren: 'org.Apache.commons', Name: 'commons-lang3', Version: '3.7'
Krug
aus Konfigurationen.kompilieren.sammle zipTree it
Lassen Sie uns besprechen, was im obigen Build-Skript passiert. Es weist Gradle an, im Maven-Repository nach der Commons-lang3-Version 3 zu suchen.7. Es weist Gradle auch an, die Abhängigkeiten in die JAR-Datei zu packen. Wenn Sie das aus Konfigurationen entfernen.kompilieren.Collect zipTree it-Zeile, dann müssen Sie die externen Abhängigkeiten in den Klassenpfad aufnehmen, wenn Sie das Programm ausführen run.
Jetzt können Sie den Build aus dem Stammordner mit dem Befehl ausführen
$ Gradle-GlasSie sollten Ergebnisse wie diese sehen:
$ Gradle-Glas
https://repo . herunterladen.Maven.Apache.org/maven2/org/apache/commons/commons-lang3/3.7/
commons-lang3-3.7.pom
https://repo . herunterladen.Maven.Apache.org/maven2/org/apache/commons/commons-parent/42/
Commons-Elternteil-42.pom
https://repo . herunterladen.Maven.Apache.org/maven2/org/apache/commons/commons-lang3/3.7/
commons-lang3-3.7.Krug
ERFOLGREICH AUFBAUEN in 6s
2 umsetzbare Aufgaben: 1 ausgeführt, 1 aktuell
Sie können den Build wie folgt ausführen:
$ java -cp build/libs/helloworld-1.0.glas helloworldHallo Welt!
Hallo Welt!
Wenn Sie die Abhängigkeiten nicht in Ihren Build aufgenommen hätten, wären die StringUtils-Klassen nicht in Ihrem helloworld-1 enthalten gewesen.0.jar-Datei. Und Sie hätten einen Fehler wie diesen erhalten:
$ java -cp build/libs/helloworld-1.0.glas halloworldHallo Welt!
Ausnahme im Thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/
StringUtils bei helloworld.main(halloworld.java:11)
Verursacht durch: Java.lang.ClassNotFoundException: org.Apache.Gemeingüter.lang3.StringUtils
bei java.Netz.URLClassLoader.findClass(URLClassLoader.java:381)
bei java.lang.ClassLoader.loadClass(ClassLoader.java:424)
bei Sonne.verschiedenes.Launcher$AppClassLoader.loadClass(Launcher.java:331)
bei java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 1 mehr
Gradle macht es Ihnen leicht, Ihre Abhängigkeiten in Ihr Paket zu packen.
Fazit
Die Verwendung von Gradle-Repositorys und Abhängigkeitsfunktionen kann Ihren Abhängigkeitsverwaltungsprozess vereinfachen. Sie müssen nicht alles manuell im Auge behalten.
Weitere Studie:
Gradle-Abhängigkeitsmanagement für Java-Projekte