Forståelse av avhengighetsledelse i Gradle
Repositories brukes i Gradle for avhengighetsstyring. Det er to komponenter til Gradle avhengigheter: avhengigheter og publikasjoner av prosjektet.
Når du bygger et prosjekt på Gradle, trenger du sannsynligvis biblioteker fra andre utviklere. Anta at du trenger Apache Commons Lang-biblioteket for spesielle strengmanipulasjoner. Så du trenger det i klassen din for at koden din skal fungere. Og Apache Commons Lang kan trenge flere biblioteker som du ikke er klar over. Gradle lar deg fortelle den spesielle avhengigheten prosjektet ditt trenger, og det vil gå til det angitte depotet som Maven eller Ivy og finne ut alle relaterte avhengigheter og laste ned filene og sette det opp for deg automatisk.
Gradle har også muligheten til å publisere gjenstandene dine. Du kan bestemme hva publikasjon betyr for din spesielle sak. Du kan publisere den lokalt eller publisere den til et Maven- eller Ivy-arkiv.
Gradle Repository Eksempel
Anta at vi vil bruke StringUtils-klassen fra Apache Commons Lang-biblioteket. La oss sette opp en regissør som denne:
Hei Verden| - bygge.gradering
'- src
| - hoved
'- java
'-- Hei Verden
'-- Hei Verden.java
I helloworld.java, kan du sette følgende kode:
importere organisasjon.apache.allmenning.lang3.StringUtils;offentlig klasse helloworld
public static void main (String [] args)
Stringhilsener = "Hello World!";
System.ute.println (hilsener);
System.ute.println (StringUtils.swapCase (hilsener));
Og i bygningen.gradle-fil kan du sette følgende:
bruk plugin: 'java'versjon = '1.0 '
repositories
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 byggeskriptet ovenfor. Det forteller Gradle å se i Maven-arkivet for commons-lang3 versjon 3.7. Det forteller også Gradle å pakke avhengighetene i jar-filen. Hvis du fjerner fra konfigurasjonene.kompilere.samle zipTree it -linjen, så må du inkludere de eksterne avhengighetene i klassestien når du kjører programmet.
Nå fra rotmappen kan du kjøre build med kommandoen
$ gradle jarDu 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-parent / 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 SUCCESFULL på 6-tallet
2 handlingsoppgaver: 1 utført, 1 oppdatert
Du kan kjøre bygningen slik:
$ java -cp build / libs / helloworld-1.0.jar helloworldHei Verden!
Hei Verden!
Hvis du ikke hadde tatt med avhengighetene i bygningen din, hadde ikke StringUtils-klassene blitt inkludert i helloworld-1.0.jar-fil. Og du ville ha fått en feil som dette:
$ java -cp build / libs / helloworld-1.0.jar helloworldHei Verden!
Unntak i tråd "hoved" java.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils på helloworld.main (helloworld.Java: 11)
Forårsaket av: java.lang.ClassNotFoundException: org.apache.allmenning.lang3.StringUtils
på java.nett.URLClassLoader.findClass (URLClassLoader.java: 381)
på java.lang.ClassLoader.loadClass (ClassLoader.java: 424)
ved sola.diverse.Launcher $ AppClassLoader.loadClass (Launcher.java: 331)
på java.lang.ClassLoader.loadClass (ClassLoader.java: 357)
… 1 til
Gradle gjør det enkelt for deg å pakke avhengighetene dine i pakken.
Konklusjon
Ved å bruke Gradle-arkiver og avhengighetsfunksjoner kan du forenkle prosessen for avhengighetsadministrasjon. Du trenger ikke å holde orden på alt manuelt.
Videre studier:
Gradle Dependency Management for Java-prosjekter