Gradle Repozytoria

Gradle Repozytoria
Gradle szuka zewnętrznych zależności w repozytoriach. Repozytorium Gradle jest organizowane przy użyciu grupy, nazwy i wersji. Gradle jest kompatybilny z różnymi formatami repozytorium, takimi jak Maven i Ivy.

Zrozumienie zarządzania zależnością w Gradle

Repozytoria są używane w stopniach do zarządzania zależnością. Istnieją dwa elementy stopniowe zależności: zależności i publikacje projektu.

Kiedy budujesz projekt na gradle, prawdopodobnie będziesz potrzebować bibliotek od innych programistów. Załóżmy, że potrzebujesz biblioteki Apache Commons Lang do specjalnych manipulacji ciągami. Potrzebujesz go w swojej ścieżce klasowej, aby Twój kod działał. A Apache Commons Lang może potrzebować dodatkowych bibliotek, których nie jesteś świadomy. Gradle pozwala poinformować o szczególnej zależności, którą potrzebuje Twój projekt i przejdzie on do określonego repozytorium, takiego jak Maven lub Ivy i ustalić wszystkie powiązane zależności i pobrać pliki i skonfiguruj je automatycznie.

Gradle ma również możliwość publikowania twoich artefaktów. Możesz zdecydować, co oznacza publikacja dla konkretnego przypadku. Możesz opublikować go lokalnie lub opublikować w repozytorium Maven lub Ivy.

Przykład repozytorium Gradle

Załóżmy, że chcemy użyć klasy Stringutils z biblioteki Apache Commons Lang. Ustawmy reżysera takiego:

Witaj świecie
|- buduj.Gradle
„- Src
|- Main
'- Java
'-- Witaj świecie
'-- Witaj świecie.Jawa

W Helloworld.Java, możesz umieścić następujący kod:

import org.Apache.lud.Lang3.Stringutils;
klasa publiczna Helloworld
public static void main (string [] args)
Pozdrowienia String = "Hello World!";
System.na zewnątrz.println (pozdrowienia);
System.na zewnątrz.println (Stringutils.Swapcase (pozdrowienia));

I w kompilacji.Plik gradle Możesz podać następujące:

Zastosuj wtyczkę: „Java”
wersja = '1.0 '
Repozytoria
Mavencentral ()

zależności
Grupa kompiluj: 'org.Apache.Commons ', nazwa: „Commons-Lang3”, wersja: „3.7 '

słoik
z konfiguracji.skompilować.zbierz ziptree it

Omówmy, co dzieje się w powyższym skrypcie kompilacji. Mówi gradle, aby szukał repozytorium Maven dla Commons-Lang3 w wersji 3.7. Mówi również Gradle, aby pakować zależności w pliku JAR. Jeśli usuniesz z konfiguracji.skompilować.Zbierz Ziptree IT, wtedy będziesz musiał dołączyć zewnętrzne zależności do ścieżki klasowej podczas uruchomienia programu.

Teraz z folderu głównego możesz uruchomić kompilację za pomocą polecenia

$ gradle słoik
Powinieneś zobaczyć takie wyniki:
$ gradle słoik
Pobierz https: // repo.Maven.Apache.org/maven2/org/apache/commons/commons-lang3/3.7/
Commons-Lang3-3.7.pom
Pobierz https: // repo.Maven.Apache.org/maven2/org/apache/commons/commons-rodziciel/42/
Commons-Parent-42.pom
Pobierz https: // repo.Maven.Apache.org/maven2/org/apache/commons/commons-lang3/3.7/
Commons-Lang3-3.7.słoik
Zbuduj udane w 6s
2 zadania wykonujące: 1 wykonane, 1 aktualne

Możesz uruchomić kompilację w ten sposób:

$ java -cp build/libs/helloworld -1 -1.0.Jar Helloworld
Witaj świecie!
Witaj świecie!

Gdybyś nie zawarł zależności do swojej kompilacji, zajęcia Stringutils nie zostałyby uwzględnione w twoim Helloworld-1.0.plik jar. I otrzymałbyś taki błąd:

$ java -cp build/libs/helloworld -1 -1.0.Jar Helloworld
Witaj świecie!
Wyjątek w wątku „główna” Java.Lang.NOCLASSDEFFOUNDERROR: ORG/APACHE/COMMONS/LANG3/
Stringutils w Helloworld.Main (Helloworld.Java: 11)
Spowodowane przez: Java.Lang.ClassNotFoundException: org.Apache.lud.Lang3.Stringutils
w Javie.internet.UrlClassloader.FindClass (urlClassloader.Java: 381)
w Javie.Lang.Klasę ładującą.loadClass (klasę ładującą.Java: 424)
o słońcu.Misc.Launcher $ AppClassloader.LOADCLASS (Launcher.Java: 331)
w Javie.Lang.Klasę ładującą.loadClass (klasę ładującą.Java: 357)
… jeszcze 1

Gradle ułatwia pakowanie zależności w pakiecie.

Wniosek

Korzystanie z repozytoriów i zależności Gradle Funkcje może uprościć proces zarządzania zależnością. Nie musisz ręcznie śledzić wszystkiego.

Dalsze badanie:

Grade Zależności Zarządzanie projektami Java