Gradle -depoter

Gradle -depoter
Gradle ser etter eksterne avhengigheter i depotene. Et Gradle -depot er organisert ved hjelp av gruppe, navn og versjon. Gradle er kompatibel med forskjellige depotformater som Maven og Ivy.

Forståelse av avhengighetsstyring i gradle

Depoter brukes i gradle for avhengighetsstyring. Det er to komponenter som er til gradsavhengigheter: avhengigheter og publikasjoner av prosjektet.

Når du bygger et prosjekt på Gradle, vil du sannsynligvis trenge biblioteker fra andre utviklere. Anta at du trenger Apache Commons Lang -biblioteket for spesielle strengmanipulasjoner. Så du trenger det i klassestien din for at koden din skal fungere. Og Apache Commons Lang trenger kanskje flere biblioteker som du ikke er klar over. Gradle lar deg fortelle den spesielle avhengigheten at prosjektet ditt trenger, og det vil gå til det spesifiserte depotet som Maven eller Ivy og finne ut alle relaterte avhengigheter og laste ned filene og sette den opp for deg automatisk.

Gradle har også muligheten til å publisere gjenstandene dine. Du kan bestemme hvilken publisering som betyr for din spesielle sak. Du kan publisere den lokalt eller publisere den til et Maven eller Ivy Repository.

Gradle Repository Eksempel

Anta at vi ønsker å bruke Stringutils -klassen fra Apache Commons Lang Library. La oss sette opp en regissør som dette:

Hei Verden
|- Bygg.gradle
'- Src
|- Hoved
'- Java
'-- Hei Verden
'-- Hei Verden.Java

I Helloworld.Java, du kan legge følgende kode:

Import org.Apache.Commons.lang3.Stringutils;
offentlig klasse HelloWorld
public static void main (String [] args)
String hilsen = "Hello World!";
System.ute.println (hilsener);
System.ute.Println (Stringutils.Swapcase (hilsener));

Og i bygningen.Gradle -fil kan du legge følgende:

Bruk plugin: 'Java'
versjon = '1.0 '
depoter
mavencentral ()

avhengigheter
kompilere gruppe: 'org.Apache.Commons ', navn:' Commons-Lang3 ', versjon:' 3.7 '

krukke
fra konfigurasjoner.kompilere.samle ziptree it

La oss diskutere hva som skjer i ovennevnte build -skript. Det forteller Gradle å se i Maven-depotet for Commons-Lang3 versjon 3.7. Det ber også Gradle å pakke avhengighetene i JAR -filen. Hvis du fjerner fra konfigurasjonene.kompilere.Samle Ziptree it -linjen, så må du ta med de eksterne avhengighetene i klassestien når du kjører programmet.

Nå fra rotmappen kan du kjøre bygget med kommandoen

$ Gradle Jar
Du bør se resultater som dette:
$ Gradle Jar
Last ned https: // repo.Maven.Apache.org/maven2/org/apache/commons/commons-lang3/3.7/
Commons-Lang3-3.7.pom
Last ned https: // repo.Maven.Apache.org/maven2/org/apache/commons/commons-foreldre/42/
Commons-Parent-42.pom
Last ned https: // repo.Maven.Apache.org/maven2/org/apache/commons/commons-lang3/3.7/
Commons-Lang3-3.7.krukke
Bygg vellykket i 6s
2 Handlingsoppgaver: 1 Utført, 1 oppdatert

Du kan kjøre bygningen slik:

$ java -cp build/libs/helloworld -1.0.Jar Helloworld
Hei Verden!
Hei Verden!

Hvis du ikke hadde inkludert avhengighetene i byggingen din, ville ikke Stringutils-klassene vært inkludert i Helloworld-1.0.JAR -fil. Og du ville ha fått en feil som denne:

$ java -cp build/libs/helloworld -1.0.Jar Helloworld
Hei Verden!
Unntak i tråden "Main" Java.lang.NoclassDeffoundError: org/apache/commons/lang3/
Stringutils på Helloworld.Main (Helloworld.Java: 11)
Forårsaket av: java.lang.ClassNotFoundException: Org.Apache.Commons.lang3.Stringutils
hos Java.nett.UrlClassLoader.FindClass (UrlClassLoader.Java: 381)
hos Java.lang.Klasselaster.LoadClass (ClassLoader.Java: 424)
ved sol.misc.Launcher $ AppClassLoader.LoadClass (Launcher.Java: 331)
hos Java.lang.Klasselaster.LoadClass (ClassLoader.Java: 357)
… 1 til

Gradle gjør det enkelt for deg å pakke avhengighetene dine i pakken din.

Konklusjon

Å bruke Gradle -depoter og avhengighetsfunksjonaliteter kan forenkle din avhengighetsstyringsprosess. Du trenger ikke å holde oversikt over alt manuelt.

Videre studier:

Gradle Dependency Management for Java Projects