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 VerdenI Helloworld.Java, du kan legge følgende kode:
Import org.Apache.Commons.lang3.Stringutils;Og i bygningen.Gradle -fil kan du legge følgende:
Bruk plugin: 'Java'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.
Å bruke Gradle -depoter og avhengighetsfunksjonaliteter kan forenkle din avhengighetsstyringsprosess. Du trenger ikke å holde oversikt over alt manuelt.
Gradle Dependency Management for Java Projects