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 świecieW Helloworld.Java, możesz umieścić następujący kod:
import org.Apache.lud.Lang3.Stringutils;I w kompilacji.Plik gradle Możesz podać następujące:
Zastosuj wtyczkę: „Java”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.
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.
Grade Zależności Zarządzanie projektami Java