Forståelse af afhængighedsstyring i Gradle
Repositories bruges i Gradle til afhængighedsstyring. Der er to komponenter til Gradle-afhængigheder: afhængigheder og publikationer af projektet.
Når du bygger et projekt på Gradle, har du sandsynligvis brug for biblioteker fra andre udviklere. Antag at du har brug for Apache Commons Lang-biblioteket til specielle strengmanipulationer. Så du har brug for det i din klassesti for at din kode skal fungere. Og Apache Commons Lang har muligvis brug for yderligere biblioteker, som du ikke er opmærksom på. Gradle giver dig mulighed for at fortælle den særlige afhængighed, dit projekt har brug for, og det vil gå til det angivne lager som Maven eller Ivy og finde ud af alle de relaterede afhængigheder og downloade filerne og konfigurere det automatisk til dig.
Gradle har også evnen til at udgive dine artefakter. Du kan beslutte, hvad offentliggørelse betyder for din særlige sag. Du kan udgive det lokalt eller udgive det til et Maven- eller Ivy-arkiv.
Gradle Repository Eksempel
Antag, vi vil bruge StringUtils-klassen fra Apache Commons Lang-biblioteket. Lad os oprette en instruktør som denne:
Hej Verden| - build.gradle
'- src
| - hoved
'- java
'-- Hej Verden
'-- Hej Verden.java
I helloworld.java, du kan sætte følgende kode:
importorg.apache.fælles.lang3.StringUtils;offentlig klasse helloworld
offentlig statisk ugyldig hoved (String [] args)
Stringhilsner = "Hello World!";
System.ud.println (hilsner);
System.ud.println (StringUtils.swapCase (hilsner));
Og i bygningen.gradle-fil kan du sætte følgende:
anvend plugin: 'java'version = '1.0 '
opbevaringssteder
mavenCentral ()
afhængigheder
kompilér gruppe: 'org.apache.commons ', navn:' commons-lang3 ', version:' 3.7 '
krukke
fra konfigurationer.udarbejde.indsamle zipTree it
Lad os diskutere, hvad der sker i ovenstående build-script. Det fortæller Gradle at kigge i Maven-arkivet for commons-lang3 version 3.7. Det fortæller også Gradle at pakke afhængighederne i jar-filen. Hvis du fjerner fra konfigurationer.udarbejde.saml zipTree it -linjen, så bliver du nødt til at medtage de eksterne afhængigheder i klassestien, når du kører programmet.
Nu fra rodmappen kan du køre build med kommandoen
$ gradle krukkeDu skal se resultater som denne:
$ gradle krukke
Download https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.pom
Download https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-parent-42.pom
Download https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.krukke
BYGG FRA I 6s
2 handlinger, der kan handles: 1 udført, 1 opdateret
Du kan køre build sådan:
$ java -cp build / libs / helloworld-1.0.krukke helloworldHej Verden!
Hej Verden!
Hvis du ikke havde inkluderet afhængighederne i din build, ville StringUtils-klasserne ikke være inkluderet i din helloworld-1.0.jar-fil. Og du ville have fået en fejl som denne:
$ java -cp build / libs / helloworld-1.0.krukke helloworldHej Verden!
Undtagelse i tråd "main" java.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils i helloworld.main (helloworld.Java: 11)
Forårsaget af: java.lang.ClassNotFoundException: org.apache.fælles.lang3.StringUtils
i java.net.URLClassLoader.findClass (URLClassLoader.java: 381)
i java.lang.ClassLoader.loadClass (ClassLoader.Java: 424)
ved sol.misc.Launcher $ AppClassLoader.loadClass (Launcher.java: 331)
i java.lang.ClassLoader.loadClass (ClassLoader.java: 357)
… 1 mere
Gradle gør det nemt for dig at pakke dine afhængigheder i din pakke.
Konklusion
Brug af Gradle-arkiver og afhængighedsfunktioner kan forenkle din afhængighedsstyringsproces. Du behøver ikke manuelt holde styr på alt.
Yderligere studier:
Gradle Dependency Management til Java-projekter