Razumevanje upravljanja odvisnosti v Gradleju
Repozitoriji se v Gradleju uporabljajo za upravljanje odvisnosti. Odvisnosti Gradleja so dve komponenti: odvisnosti in objave projekta.
Ko gradite projekt na Gradleju, boste verjetno potrebovali knjižnice drugih razvijalcev. Recimo, da za posebne manipulacije z nizi potrebujete knjižnico Apache Commons Lang. Torej jo potrebujete v svoji učilni poti, da bo koda delovala. In Apache Commons Lang bo morda potreboval dodatne knjižnice, ki jih ne poznate. Gradle vam omogoča, da določite določeno odvisnost, ki jo potrebuje vaš projekt, in se bo odpravil na določeno odlagališče, kot je Maven ali Ivy, in ugotovil vse povezane odvisnosti ter prenesel datoteke in ga samodejno nastavil za vas.
Gradle ima tudi možnost, da objavi vaše artefakte. Odločite se lahko, kaj objava pomeni za vaš primer. Lahko ga objavite lokalno ali objavite v odlagališču Maven ali Ivy.
Primer skladišča Gradle
Recimo, da želimo uporabiti razred StringUtils iz knjižnice Apache Commons Lang. Postavimo režiserja, kot je ta:
Pozdravljen, svet| - graditi.gradle
'- src
| - glavni
'- java
'-- Pozdravljen, svet
'-- Pozdravljen, svet.java
V helloworld svetu.java, lahko vstavite naslednjo kodo:
uvozna org.apache.skupnega.lang3.StringUtils;javni razred helloworld
public static void main (String [] args)
String pozdravi = "Hello World!";
Sistem.ven.println (pozdrav);
Sistem.ven.println (StringUtils.swapCase (pozdrav));
In v gradnji.datoteko gradle lahko dodate naslednje:
uporabi vtičnik: 'java'version = '1.0 '
repozitoriji
mavenCentral ()
odvisnosti
sestavi skupino: 'org.apache.commons ', ime:' commons-lang3 ', različica:' 3.7 '
kozarec
iz konfiguracij.sestavi.zberi zipTree it
Pogovorimo se o dogajanju v zgornjem skriptu za gradnjo. Gradleu sporoča, naj v repozitoriju Maven poišče različico 3 commons-lang3.7. Prav tako Gradleu sporoča, naj odvisnosti zapakira v datoteko jar. Če odstranite iz konfiguracij.sestavi.zberite vrstico zipTree it, potem boste morali med zagonom programa vključiti zunanje odvisnosti v pot do razreda.
Zdaj v korenski mapi lahko z ukazom zaženete gradnjo
$ gradle kozarecMorali bi videti takšne rezultate:
$ gradle kozarec
Prenesite https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.pom
Prenesite https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-parent-42.pom
Prenesite https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.kozarec
ZGRADI USPEŠNO v 6s
2 izvedljivi nalogi: 1 izvedena, 1 posodobljena
Gradnjo lahko zaženete tako:
$ java -cp build / libs / helloworld-1.0.kozarec helloworldPozdravljen, svet!
Pozdravljen, svet!
Če v svojo gradnjo ne bi vključili odvisnosti, potem razredi StringUtils ne bi bili vključeni v vaš helloworld-1.0.datoteka jar. In dobili bi takšno napako:
$ java -cp build / libs / helloworld-1.0.kozarec helloworldPozdravljen, svet!
Izjema v niti "main" java.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils na helloworld.glavni (helloworld.java: 11)
Vzrok: java.lang.ClassNotFoundException: org.apache.skupnega.lang3.StringUtils
na javi.mreža.URLClassLoader.findClass (URLClassLoader.java: 381)
na javi.lang.ClassLoader.loadClass (ClassLoader.java: 424)
ob soncu.razno.Zaganjalnik $ AppClassLoader.loadClass (Launcher.java: 331)
na javi.lang.ClassLoader.loadClass (ClassLoader.java: 357)
… Še 1
Gradle vam olajša pakiranje odvisnosti v paket.
Zaključek
Uporaba Gradlejevih skladišč in funkcionalnosti odvisnosti vam lahko poenostavi postopek upravljanja odvisnosti. Ni vam treba ročno spremljati vsega.
Nadaljni študij:
Gradle Upravljanje odvisnosti za projekte Java