Gradle -Repositories

Gradle -Repositories
Gradle sucht nach externen Abhängigkeiten in den Repositories. Ein Gradle -Repository wird mit Gruppen, Namen und Version organisiert. Gradle ist mit verschiedenen Repository -Formaten wie Maven und Ivy kompatibel.

Das Abhängigkeitsmanagement im Gradle verstehen

Repositorys werden im Abschluss für die Abhängigkeitsmanagement verwendet. Es gibt zwei Komponenten für Abhängigkeiten von Absolventen: 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 Library für spezielle String -Manipulationen. Sie benötigen es also in Ihrem Klassenpfad, damit Ihr Code funktioniert. Und die Apache Commons Lang benötigen möglicherweise zusätzliche Bibliotheken, die Sie nicht kennen. Mit Gradle können Sie die jeweilige Abhängigkeit mitteilen, die Ihr Projekt benötigt, und es wird in das angegebene Repository wie Maven oder Ivy geleitet, alle zugehörigen Abhängigkeiten herauszufinden und die Dateien herunterzuladen und sie automatisch für Sie einzurichten.

Gradle hat auch die Möglichkeit, Ihre Artefakte zu veröffentlichen. Sie können entscheiden, welche 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 Gradle -Repository

Nehmen wir an, wir möchten die Stringutils -Klasse aus der Apache Commons Lang Library verwenden. Lassen Sie uns einen solchen Regisseur einrichten:

Hallo Welt
|- bauen.Gradle
'- Src
|- Main
'- Java
'-- Hallo Welt
'-- Hallo Welt.Java

In der Helloworld.Java, Sie können den folgenden Code eingeben:

import org.Apache.Commons.Lang3.Stringutils;
öffentliche Klasse Helloworld
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 Sie können Folgendes einlegen:

Plugin anwenden: 'Java'
Version = '1.0 '
Repositories
mavencentral ()

Abhängigkeiten
Gruppe kompilieren: 'org.Apache.Commons ', Name:' Commons-Lang3 ', Version:' 3.7 '

Krug
aus Konfigurationen.kompilieren.Sammeln Sie ziptree it

Lassen Sie uns diskutieren, was im obigen Build -Skript passiert. Es sagt, dass Gradle im Maven-Repository für die Commons-Lang3 Version 3 nachsehen soll.7. Es fordert Gradle auch auf, die Abhängigkeiten in die JAR -Datei zu verpacken. Wenn Sie die aus Konfigurationen entfernen.kompilieren.Sammeln Sie ziptree it Zeile, dann müssen Sie die externen Abhängigkeiten in den Klassenpfad einbeziehen, wenn Sie das Programm ausführen.

Nun aus dem Stammordner können Sie den Build mit dem Befehl ausführen

$ Gradle Jar
Sie sollten solche Ergebnisse sehen:
$ Gradle Jar
Laden Sie https: // repo herunter.Maven.Apache.org/maven2/org/apache/commons/commons-Lang3/3.7/
Commons-Lang3-3.7.Pom
Laden Sie https: // repo herunter.Maven.Apache.org/maven2/org/apache/commons/commons-parent/42/
Commons-Eltern-42.Pom
Laden Sie https: // repo herunter.Maven.Apache.org/maven2/org/apache/commons/commons-Lang3/3.7/
Commons-Lang3-3.7.Krug
Bauen Sie erfolgreich in 6s auf
2 umsetzbare Aufgaben: 1 ausgeführt, 1 aktuell

Sie können den Build so ausführen:

$ java -cp Build/libs/helloWorld -1.0.Jar HelloWorld
Hallo Welt!
Hallo Welt!

Wenn Sie die Abhängigkeiten nicht in Ihren Build aufgenommen hätten, wären die Stringutils-Klassen nicht in Ihre HelloWorld-1 aufgenommen worden.0.JAR -Datei. Und Sie hätten einen solchen Fehler bekommen:

$ java -cp Build/libs/helloWorld -1.0.Jar HelloWorld
Hallo Welt!
Ausnahme im Thread "Haupt" Java.Lang.NoclassDeffoundError: org/apache/commons/lang3/
Stringutils bei HelloWorld.Main (HelloWorld.Java: 11)
Verursacht durch: Java.Lang.ClassNotFoundException: org.Apache.Commons.Lang3.Stringutils
bei Java.Netz.URLCASSLOADER.FindClass (URLCASSLOADER.Java: 381)
bei Java.Lang.Klassenloader.LoadClass (Classloader.Java: 424)
bei der Sonne.Miser.Launcher $ AppClassloader.LoadClass (Launcher.Java: 331)
bei Java.Lang.Klassenloader.LoadClass (Classloader.Java: 357)
… 1 mehr

Gradle erleichtert es Ihnen, Ihre Abhängigkeiten in Ihr Paket zu packen.

Abschluss

Die Verwendung von Abschlussfunktionen und Abhängigkeiten Funktionen können Ihren Abhängigkeitsmanagementprozess vereinfachen. Sie müssen nicht alles manuell im Auge behalten.

Weiteres Studium:

Gradle -Abhängigkeitsmanagement für Java -Projekte