A függőségkezelés megértése a fokozatban
Az adattárakat a Gradle-ben használják a függőségkezeléshez. A Gradle-függőségeknek két összetevője van: függőségek és a projekt publikációi.
Amikor egy projektet épít a Gradle-re, valószínűleg más fejlesztők könyvtáraira lesz szüksége. Tegyük fel, hogy speciális karakterlánc-manipulációkhoz szüksége van az Apache Commons Lang könyvtárra. Tehát szüksége van rá az osztályterületén, hogy működhessen a kódja. Az Apache Commons Lang-nak pedig további könyvtárakra lehet szüksége, amelyekről Ön még nincs tisztában. A Gradle lehetővé teszi, hogy megmondja azt a függőséget, amelyre a projektnek szüksége van, és az a megadott tárházba kerül, mint például a Maven vagy az Ivy, és kitalálja az összes kapcsolódó függőséget, letölti a fájlokat és automatikusan beállítja az Ön számára.
Gradle képes közzétenni a műtárgyakat is. Eldöntheti, hogy a közzététel mit jelent az Ön esetére. Közzéteheti helyben, vagy közzéteheti egy Maven vagy Ivy adattárban.
Gradle Repository példa
Tegyük fel, hogy az Apache Commons Lang könyvtár StringUtils osztályát szeretnénk használni. Állítsunk fel egy ilyen rendezőt:
Helló Világ| - épít.gradle
'- src
| - fő
'- java
'-- Helló Világ
'-- Helló Világ.Jáva
A fõvilágban.java, beírhatja a következő kódot:
import org.apache.közönséges.lang3.StringUtils;nyilvános osztály helloworld
public static void main (String [] érvel)
String üdvözlet = "Hello World!";
Rendszer.ki.println (üdvözlet);
Rendszer.ki.println (StringUtils.swapCase (üdvözlet));
És az építkezésben.gradle fájl a következőket teheti:
plugin alkalmazása: 'java'verzió = '1.0 '
adattárak
mavenCentral ()
függőségek
compile group: 'org.apache.commons ”, név:„ commons-lang3 ”, verzió:„ 3.7 '
befőttes üveg
konfigurációkból.összeállítani.gyűjteni zipTree it
Beszéljük meg, mi történik a fenti build-szkriptben. Azt mondja Gradle-nek, hogy keresse meg a Maven tárházban a commons-lang3 3. verzióját.7. Azt is megmondja Gradle-nek, hogy csomagolja be a függőségeket a jar fájlba. Ha eltávolítja a konfigurációk közül.összeállítani.gyűjtsd össze a zipTree it sort, akkor a program futtatásakor be kell vonnod a külső függőségeket az osztályútvonalba.
Most a gyökérmappából futtathatja a buildet a paranccsal
$ gradle jarIlyen eredményeket kell látnia:
$ gradle jar
Letöltés https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.pom
Töltse le a https: // repo terméket.maven.apache.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-szülő-42.pom
Töltse le a https: // repo terméket.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.befőttes üveg
6 S múlva sikeresen épül
2 végrehajtható feladat: 1 végrehajtott, 1 naprakész
Az összeállítást így futtathatja:
$ java -cp build / libs / helloworld-1.0.jar helloworldHelló Világ!
Helló Világ!
Ha nem vetted volna fel a függőségeket az építkezésbe, akkor a StringUtils osztályok nem lettek volna bekerülve a helloworld-1-be.0.jar fájl. És ilyen hibát kapott volna:
$ java -cp build / libs / helloworld-1.0.jar helloworldHelló Világ!
Kivétel a "main" java szálban.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils a helloworldnél.fő (helloworld.java: 11)
Okozta: java.lang.ClassNotFoundException: org.apache.közönséges.lang3.StringUtils
java-nál.háló.URLClassLoader.findClass (URLClassLoader.java: 381)
java-nál.lang.ClassLoader.loadClass (ClassLoader.java: 424)
napsütéskor.egyéb.Launcher $ AppClassLoader.loadClass (Launcher.java: 331)
java-nál.lang.ClassLoader.loadClass (ClassLoader.java: 357)
… Még 1
A Gradle megkönnyíti a függőségek csomagolását.
Következtetés
A Gradle adattárak és függőségek funkcióinak használata egyszerűsítheti a függőségkezelési folyamatot. Nem kell manuálisan nyomon követni mindent.
A további vizsgálat:
Gradle Dependency Management Java projektekhez