Izpratne par atkarības pārvaldību Gradle
Krātuvē krātuves tiek izmantotas atkarības pārvaldībai. Gradle atkarībām ir divi komponenti: atkarības un projekta publikācijas.
Veidojot projektu uz Gradle, jums, iespējams, būs nepieciešamas citu izstrādātāju bibliotēkas. Pieņemsim, ka īpašām virkņu manipulācijām jums ir nepieciešama Apache Commons Lang bibliotēka. Tātad, lai kods darbotos, jums tas ir nepieciešams klases ceļā. Apache Commons Lang var būt nepieciešamas papildu bibliotēkas, kuras jūs nezināt. Gradle ļauj jums pateikt konkrēto atkarību, kas nepieciešama jūsu projektam, un tā nonāks norādītajā krātuvē, piemēram, Maven vai Ivy, un izdomās visas saistītās atkarības, lejupielādēs failus un iestatīs to automātiski.
Gradle ir arī iespēja publicēt savus artefaktus. Jūs varat izlemt, ko publikācija nozīmē jūsu konkrētajā gadījumā. Varat to publicēt lokāli vai publicēt Maven vai Ivy repozitorijā.
Gradle krātuves piemērs
Pieņemsim, ka mēs vēlamies izmantot StringUtils klasi no Apache Commons Lang bibliotēkas. Izveidosim šādu režisoru:
Sveika pasaule| - veidot.gradle
'- src
| - galvenais
'- java
'-- Sveika pasaule
'-- Sveika pasaule.java
Pasaule.java, varat ievietot šādu kodu:
importēt org.apache.commons.lang3.StringUtils;sabiedrības klases kolēģis
public static void main (String [] args)
Stīgu sveicieni = "Sveika pasaule!";
Sistēma.ārā.println (apsveikumi);
Sistēma.ārā.println (StringUtils.swapCase (apsveikumi));
Un būvē.gradle failu varat ievietot sekojošo:
piemērot spraudni: 'java'versija = '1.0 '
krātuves
mavenCentral ()
atkarības
sastādīt grupu: 'org.apache.commons ”, nosaukums:“ commons-lang3 ”, versija:“ 3.7 '
burka
no konfigurācijām.sastādīt.savākt zipTree it
Apspriedīsim, kas notiek iepriekš izveidotajā skriptā. Gradlei tiek likts meklēt Maven repozitorijā par 3. versiju commons-lang3.7. Tas arī liek Gradlei iesaiņot atkarības burkā. Ja noņemat no konfigurācijām.sastādīt.apkopot zipTree it rindiņu, tad, palaižot programmu, jums būs jāiekļauj ārējās atkarības klases ceļā.
Tagad no saknes mapes varat palaist veidot ar komandu
$ gradle jarJums vajadzētu redzēt šādus rezultātus:
$ gradle jar
Lejupielādējiet https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.pom
Lejupielādējiet https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-vecāks-42.pom
Lejupielādējiet https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.burka
VEICIET veiksmīgi 6 sekunžu laikā
2 veicami uzdevumi: 1 izpildīts, 1 atjaunināts
Veidošanu var palaist šādi:
$ java -cp build / libs / helloworld-1.0.burku kolēģisSveika pasaule!
Sveika pasaule!
Ja jūs nebūtu iekļāvis atkarības savā būvējumā, tad StringUtils klases nebūtu iekļautas jūsu helloworld-1.0.burku fails. Un jūs būtu ieguvis šādu kļūdu:
$ java -cp build / libs / helloworld-1.0.burku kolēģisSveika pasaule!
Izņēmums pavedienā "galvenā" java.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils pie pasaules.galvenais (kolēģis.java: 11)
Izraisa: java.lang.ClassNotFoundException: org.apache.kopīgas.lang3.StringUtils
pie java.tīkls.URLClassLoader.findClass (URLClassLoader.java: 381)
pie java.lang.ClassLoader.loadClass (ClassLoader.java: 424)
pie saules.dažādi.Palaidējs $ AppClassLoader.loadClass (palaidējs.java: 331)
pie java.lang.ClassLoader.loadClass (ClassLoader.java: 357)
… Vēl 1
Gradle atvieglo atkarību iesaiņošanu paketē.
Secinājums
Izmantojot Gradle krātuves un atkarību funkcijas, var vienkāršot atkarību pārvaldības procesu. Jums nav manuāli jāseko līdzi visam.
Turpmāka izpēte:
Gradle Atkarības pārvaldība Java projektiem