Pochopenie riadenia závislostí v Gradle
Úložiská sa v Gradle používajú na správu závislostí. Závislosti Gradle pozostávajú z dvoch komponentov: závislosti a publikácie projektu.
Keď na Gradle staviate projekt, pravdepodobne budete potrebovať knižnice od iných vývojárov. Predpokladajme, že potrebujete knižnicu Apache Commons Lang na špeciálne manipulácie s reťazcami. Potrebujete ho preto vo svojej triede, aby mohol váš kód fungovať. A Apache Commons Lang môže potrebovať ďalšie knižnice, o ktorých neviete. Gradle vám umožňuje povedať konkrétnej závislosti, ktorú váš projekt potrebuje, a pôjde do určeného úložiska ako Maven alebo Ivy a zistí všetky súvisiace závislosti a stiahne súbory a automaticky ich nastaví za vás.
Gradle má tiež možnosť publikovať vaše artefakty. Môžete rozhodnúť, čo znamená zverejnenie pre váš konkrétny prípad. Môžete ho publikovať lokálne alebo do úložiska Maven alebo Ivy.
Príklad úložiska Gradle
Predpokladajme, že chceme použiť triedu StringUtils z knižnice Apache Commons Lang. Postavme takého riaditeľa:
helloworld| - zostaviť.gradle
„- src
| - hlavné
'- java
„- helloworld
„- helloworld.java
V helloworlde.java, môžete vložiť nasledujúci kód:
import org.apache.Commons.lang3.StringUtils;verejná trieda helloworld
public static void main (String [] args)
String greetings = "Ahoj Svet!";
Systém.von.println (pozdravy);
Systém.von.println (StringUtils.swapCase (pozdravy));
A v zostave.súbor gradle môžete vložiť nasledovné:
použiť plugin: 'java'verzia = '1.0 '
úložiská
mavenCentral ()
závislosti
zostaviť skupinu: „org.apache.commons ', meno:' commons-lang3 ', verzia:' 3.7 '
jar
z konfigurácií.zostaviť.zbierať zipTree it
Poďme diskutovať o tom, čo sa deje vo vyššie uvedenom zostavovacom skripte. Hovorí spoločnosti Gradle, aby hľadala v úložisku Maven Commons-lang3 verzie 3.7. Tiež hovorí spoločnosti Gradle, aby balila závislosti do súboru jar. Ak odstránite konfigurácie.zostaviť.zhromaždiť riadok zipTree it, pri spustení programu budete musieť do cesty triedy zahrnúť externé závislosti.
Teraz z koreňového priečinka môžete zostavenie spustiť pomocou príkazu
$ gradle jarMali by ste vidieť tieto výsledky:
$ gradle jar
Stiahnite si https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.pom
Stiahnite si https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-parent-42.pom
Stiahnite si https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.jar
STAVTE SA ÚSPEŠNE za 6 s
2 vykonateľné úlohy: 1 vykonaná, 1 aktuálna
Zostavu môžete spustiť takto:
$ java -cp build / libs / helloworld-1.0.jar helloworldAhoj svet!
AHOJ SVET!
Ak by ste do svojho zostavenia nezahrnuli závislosti, potom by do vášho helloworld-1 neboli zahrnuté triedy StringUtils.0.súbor jar. A dostali by ste takúto chybu:
$ java -cp build / libs / helloworld-1.0.jar helloworldAhoj svet!
Výnimka vo vlákne „main“ java.lang.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils na helloworld.hlavné (helloworld.java: 11)
Spôsobil: java.lang.ClassNotFoundException: org.apache.Commons.lang3.StringUtils
na jave.sieť.URLClassLoader.findClass (URLClassLoader.java: 381)
na jave.lang.ClassLoader.loadClass (ClassLoader.java: 424)
na slnku.rôzne.Launcher $ AppClassLoader.loadClass (spúšťač.java: 331)
na jave.lang.ClassLoader.loadClass (ClassLoader.java: 357)
… ešte 1
Gradle vám uľahčuje zabalenie závislostí do vášho balíka.
Záver
Používanie funkcií úložísk Gradle a závislostí vám môže zjednodušiť proces riadenia závislostí. Nemusíte všetko manuálne sledovať.
Ďalšie štúdium:
Gradle Dependency Management pre projekty Java