Pochopení správy závislostí v Gradle
Úložiště se v Gradle používají pro správu závislostí. Závislosti Gradle mají dvě složky: závislosti a publikace projektu.
Když stavíte projekt na Gradle, budete pravděpodobně potřebovat knihovny od jiných vývojářů. Předpokládejme, že potřebujete knihovnu Apache Commons Lang pro speciální manipulaci s řetězci. Aby váš kód fungoval, potřebujete ho ve své třídě. A Apache Commons Lang možná bude potřebovat další knihovny, o kterých nevíte. Gradle vám umožňuje určit konkrétní závislost, kterou váš projekt potřebuje, a přejde do zadaného úložiště, jako je Maven nebo Ivy, a zjistit všechny související závislosti a stáhnout soubory a automaticky je nastavit.
Gradle má také možnost publikovat vaše artefakty. Můžete se rozhodnout, co pro váš konkrétní případ znamená publikace. Můžete jej publikovat místně nebo publikovat do úložiště Maven nebo Ivy.
Příklad úložiště Gradle
Předpokládejme, že chceme použít třídu StringUtils z knihovny Apache Commons Lang. Postavme takového ředitele:
Ahoj světe| - sestavení.gradle
'- src
| - hlavní
'- java
'-- Ahoj světe
'-- Ahoj světe.Jáva
Ve helloworldu.java, můžete dát následující kód:
import org.apache.Commons.lang3.StringUtils;veřejná třída helloworld
public static void main (String [] args)
String greetings = "Ahoj světe!";
Systém.ven.println (pozdravy);
Systém.ven.println (StringUtils.swapCase (pozdravy));
A v sestavě.soubor gradle můžete vložit následující:
použít plugin: 'java'verze = '1.0 '
repozitáře
mavenCentral ()
závislosti
kompilační skupina: „org.apache.commons ', name:' commons-lang3 ', verze:' 3.7 '
sklenice
z konfigurací.kompilovat.sbírat zipTree it
Pojďme diskutovat o tom, co se děje ve výše uvedeném skriptu sestavení. Říká společnosti Gradle, aby hledala v úložišti Maven Commons-lang3 verze 3.7. Také říká společnosti Gradle, aby zabalila závislosti do souboru jar. Pokud odeberete z konfigurací.kompilovat.sbírat řádek zipTree it, pak budete muset při spuštění programu zahrnout externí závislosti do cesty ke třídě.
Nyní z kořenové složky můžete spustit sestavení pomocí příkazu
$ gradle jarMěli byste vidět takové výsledky:
$ gradle jar
Stáhněte si https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.pom
Stáhněte si https: // repo.maven.apache.org / maven2 / org / apache / commons / commons-parent / 42 /
commons-parent-42.pom
Stáhněte si https: // repo.Maven.apache.org / maven2 / org / apache / commons / commons-lang3 / 3.7 /
commons-lang3-3.7.sklenice
BUILD ÚSPĚŠNÝ za 6 s
2 proveditelné úkoly: 1 provedený, 1 aktuální
Sestavení můžete spustit takto:
$ java -cp build / libs / helloworld-1.0.jar helloworldAhoj světe!
Ahoj světe!
Pokud jste do svého sestavení nezahrnuli závislosti, pak by třídy StringUtils nebyly zahrnuty do vašeho helloworld-1.0.soubor jar. A vy byste dostali takovou chybu:
$ java -cp build / libs / helloworld-1.0.jar helloworldAhoj světe!
Výjimka ve vlákně „main“ java.jazyk.NoClassDefFoundError: org / apache / commons / lang3 /
StringUtils na helloworld.hlavní (helloworld.java: 11)
Způsobeno: java.jazyk.ClassNotFoundException: org.apache.Commons.lang3.StringUtils
na java.síť.URLClassLoader.findClass (URLClassLoader.java: 381)
na java.jazyk.ClassLoader.loadClass (ClassLoader.java: 424)
na slunci.různé.Spouštěč $ AppClassLoader.loadClass (spouštěč.java: 331)
na java.jazyk.ClassLoader.loadClass (ClassLoader.java: 357)
… Ještě 1
Gradle vám usnadňuje zabalení závislostí do vašeho balíčku.
Závěr
Použití funkcí úložiště a závislostí Gradle může zjednodušit váš proces správy závislostí. Nemusíte vše ručně sledovat.
Další studie:
Gradle Dependency Management pro projekty Java