Comprensione della gestione delle dipendenze in Gradle
I repository sono utilizzati in Gradle per la gestione delle dipendenze. Ci sono due componenti per le dipendenze Gradle: dipendenze e pubblicazioni del progetto.
Quando crei un progetto su Gradle, probabilmente avrai bisogno di librerie di altri sviluppatori. Supponiamo di aver bisogno della libreria Apache Commons Lang per speciali manipolazioni di stringhe. Quindi ne hai bisogno nel tuo percorso di classe affinché il tuo codice funzioni. E Apache Commons Lang potrebbe aver bisogno di librerie aggiuntive di cui non sei a conoscenza. Gradle ti consente di dire la particolare dipendenza di cui il tuo progetto ha bisogno e andrà al repository specificato come Maven o Ivy e scoprirà tutte le dipendenze correlate e scaricherà i file e lo configurerà automaticamente per te.
Gradle ha anche la possibilità di pubblicare i tuoi artefatti. Puoi decidere cosa significa pubblicazione per il tuo caso particolare. Puoi pubblicarlo localmente o pubblicarlo su un repository Maven o Ivy.
Esempio di repository Gradle
Supponiamo di voler utilizzare la classe StringUtils dalla libreria Apache Commons Lang. Impostiamo un regista in questo modo:
Ciao mondo|-- build.grado
'-- src
|-- principale
'-- java
'-- Ciao mondo
'-- Ciao mondo.Giava
Nell'aldilà.java, puoi inserire il seguente codice:
importare organizzazione.apache.beni comuni.lang3.StringUtils;classe pubblica ciaomondo
public static void main(String[] args)
Saluti stringa = "Hello World!";
Sistema.su.println(saluti);
Sistema.su.println(StringUtils.swapCase(saluti));
E nella costruzione.gradle file puoi inserire quanto segue:
applica il plugin: 'java'versione = '1.0'
repository
mavenCentral()
dipendenze
compila il gruppo: 'org.apache.commons', nome: 'commons-lang3', versione: '3.7'
vaso
dalle configurazioni.compilare.raccogli zipTree it
Discutiamo cosa sta succedendo nello script di build sopra. Sta dicendo a Gradle di cercare nel repository Maven la versione 3 di commons-lang3.7. Sta anche dicendo a Gradle di impacchettare le dipendenze nel file jar. Se rimuovi dalle configurazioni.compilare.collect zipTree it, quindi dovrai includere le dipendenze esterne nel classpath quando esegui il programma.
Ora dalla cartella principale, puoi eseguire la build con il comando
barattolo $gradleDovresti vedere risultati come questo:
barattolo $gradle
Scarica https://repo.Esperto di.apache.org/maven2/org/apache/commons/commons-lang3/3.7/
commons-lang3-3.7.pom
Scarica https://repo.Esperto di.apache.org/maven2/org/apache/commons/commons-parent/42/
beni comuni-genitore-42.pom
Scarica https://repo.Esperto di.apache.org/maven2/org/apache/commons/commons-lang3/3.7/
commons-lang3-3.7.vaso
COSTRUISCI CON SUCCESSO in 6 secondi
2 attività eseguibili: 1 eseguita, 1 aggiornata
Puoi eseguire la build in questo modo:
$ java -cp build/libs/helloworld-1.0.vaso ciaomondoCiao mondo!
Ciao mondo!
Se non avessi incluso le dipendenze nella tua build, le classi StringUtils non sarebbero state incluse nel tuo helloworld-1.0.file jar. E avresti ricevuto un errore come questo:
$ java -cp build/libs/helloworld-1.0.vaso ciaomondoCiao mondo!
Eccezione nel thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/
StringUtils su helloworld.principale(ciaomondo.Giava:11)
Causato da: java.lang.ClassNotFoundException: org.apache.beni comuni.lang3.StringUtils
in java.netto.URLClassLoader.findClass(URLClassLoader.Giava:381)
in java.lang.ClassLoader.loadClass(ClassLoader.Giava:424)
al sole.varie.Launcher$AppClassLoader.loadClass(Launcher.Giava:331)
in java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 1 altro
Gradle ti rende facile impacchettare le tue dipendenze nel tuo pacchetto.
Conclusione
L'utilizzo dei repository Gradle e delle funzionalità delle dipendenze può semplificare il processo di gestione delle dipendenze. Non devi tenere traccia di tutto manualmente.
Ulteriori studi:
Gestione delle dipendenze Gradle per progetti Java