Repository gradle

Repository gradle
Gradle cerca dipendenze esterne nei repository. Un repository gradle è organizzato usando gruppo, nome e versione. Gradle è compatibile con diversi formati di repository come Maven e Ivy.

Comprensione della gestione delle dipendenze in gradle

I repository sono utilizzati in gradle per la gestione delle dipendenze. Esistono due componenti per gradcare le dipendenze: dipendenze e pubblicazioni del progetto.

Quando costruisci un progetto su Gradle, probabilmente avrai bisogno di biblioteche di altri sviluppatori. Supponiamo di aver bisogno della biblioteca di Apache Commons Lang per manipolazioni di stringhe speciali. Quindi ne hai bisogno nella tua classe per far funzionare il tuo codice. E l'Apache Commons Lang potrebbe aver bisogno di librerie aggiuntive di cui non sei a conoscenza. Gradle ti consente di raccontare la particolare dipendenza di cui il tuo progetto ha bisogno e andrà al repository specificato come Maven o Ivy e capire tutte le dipendenze correlate e scaricare i file e impostarlo automaticamente.

Gradle ha anche la possibilità di pubblicare i tuoi artefatti. Puoi decidere cosa significa la pubblicazione per il tuo caso particolare. Puoi pubblicarlo a livello locale o pubblicarlo su un repository Maven o Ivy.

Esempio di repository gradle

Supponiamo, vogliamo usare la classe StringUtils da Apache Commons Lang Library. Impostiamo un regista come questo:

Ciao mondo
|- Build.Gradle
'- src
|- Main
'- Java
'-- Ciao mondo
'-- Ciao mondo.Giava

Nell'inoworld.Java, puoi mettere il seguente codice:

Org di importazione.Apache.Comuni.Lang3.Stringutils;
Classe pubblica HelloWorld
public static void main (string [] args)
String Greetings = "Hello World!";
Sistema.fuori.println (saluti);
Sistema.fuori.println (stringutils.swapcase (saluti));

E nella build.file gradle puoi mettere quanto segue:

Applica Plugin: "Java"
versione = '1.0 '
repository
mavencentral ()

dipendenze
Gruppo di compilazione: 'Org.Apache.Commons ', nome:' Commons-Lang3 ', versione:' 3.7 '

vaso
da configurazioni.compilare.Raccogli zipTree it

Discutiamo di ciò che sta accadendo nella sceneggiatura di build sopra. Sta dicendo a Gradle di cercare nel repository Maven per la versione 3 Commons-Lang3.7. Sta anche dicendo a Gradle di impacchettare le dipendenze nel file jar. Se si rimuove le configurazioni da.compilare.Raccogli la riga .

Ora dalla cartella principale, puoi eseguire la build con il comando

$ gradle jar
Dovresti vedere risultati come questo:
$ gradle jar
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/
Commons-Parent-42.pom
Scarica https: // Repo.Esperto di.Apache.Org/Maven2/Org/Apache/Commons/Commons-Lang3/3.7/
Commons-Lang3-3.7.vaso
Costruisci successo in 6s
2 Attività attuabili: 1 eseguito, 1 aggiornato

Puoi eseguire la build in questo modo:

$ java -cp build/libs/helloworld -1.0.Jar Helloworld
Ciao 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.Jar Helloworld
Ciao mondo!
Eccezione nel thread "Main" Java.Lang.NOCLASSDEFFOUNDERROR: Org/Apache/Commons/Lang3/
Stringutils a Helloworld.Main (Helloworld.Java: 11)
Causato da: Java.Lang.ClassNotFoundException: org.Apache.Comuni.Lang3.Stringutils
a Java.netto.UrlClassloader.FindClass (UrlClassLoader.Java: 381)
a Java.Lang.Classloader.LoadClass (ClassLoader.Java: 424)
al sole.misc.Launcher $ AppClassloader.LoadClass (lanciatore.Java: 331)
a Java.Lang.Classloader.LoadClass (ClassLoader.Java: 357)
... 1 altro

Gradle ti rende facile impacchettare le tue dipendenze nel pacchetto.

Conclusione

L'uso dei repository di gradle e le funzionalità delle dipendenze possono semplificare il processo di gestione delle dipendenze. Non devi tenere manualmente traccia di tutto.

Ulteriori studi:

Gradle Dipendency Management per i progetti Java