Upravljanje ovisnostima u Gradlu

1. Pregled

U ovom ćemo uputstvu pogledati deklariranje ovisnosti u skripti gradnje Gradle-a. Za naše primjere koristit ćemo Gradle 6.7.

2. Tipična struktura

Počnimo s jednostavnom Gradle skriptom za Java projekte:

dodaci {id 'java'} spremišta {mavenCentral ()} ovisnosti {implementacija 'org.springframework.boot: spring-boot-starter: 2.3.4.OSPUSTI' testImplementation 'org.springframework.boot: spring-boot-starter-test : 2.3.4.OBLAŽENJE '}

Kao što se gore može vidjeti, imamo tri bloka koda: dodaci, spremišta, i ovisnosti.

Prvo, dodaci blok nam govori da je ovo Java projekt. Drugo, ovisnosti blok deklarira verziju 2.3.4.OSLOBOĐENJE opruga-čizma-starter ovisnost potrebna za kompajliranje produkcijskog izvornog koda projekta. Uz to, navodi se i da testni paket projekta treba proljetni-boot-starter-test sastaviti.

Gradle gradnja povlači sve ovisnosti prema dolje iz središnjeg spremišta Maven, kako je definirano spremišta blok.

Usredotočimo se na to kako možemo definirati ovisnosti.

3. Konfiguracije ovisnosti

Postoje različite konfiguracije u kojima možemo deklarirati ovisnosti. S tim u vezi, možemo odabrati biti manje ili više precizni, kao što ćemo vidjeti kasnije.

3.1. Kako objaviti ovisnosti

Za početak, konfiguracija ima 4 dijela:

  • skupina - identifikator organizacije, tvrtke ili projekta
  • Ime - identifikator ovisnosti
  • verzija - onaj koji želimo uvesti
  • klasifikator - korisno razlikovati ovisnosti s istim skupina, Ime, i verzija

Ovisnosti možemo prijaviti u dva formata. Ugovoreni format omogućuje nam da proglasimo ovisnost kao Niz:

implementacija 'org.springframework.boot: spring-boot-starter: 2.3.4.RELEASE'

Umjesto toga, prošireni nam format omogućuje da ga zapišemo kao Karta:

provedbena skupina:'org.springframework.boot', naziv: 'spring-boot-starter', inačica: '2.3.4.OBLAŽAVANJE'

3.2. Vrste konfiguracije

Nadalje, Gradle nudi mnoge vrste konfiguracije ovisnosti:

  • api - koristi se za stvaranje eksplicitnih ovisnosti i njihovo izlaganje u stazi predavanja. Na primjer, kada implementiramo knjižnicu kako bi bila transparentna za potrošače knjižnice
  • provedba- potrebni za kompajliranje produkcijskog izvornog koda i isključivo su interni. Nisu izloženi izvan paketa
  • compileOnly- koriste se kada ih treba deklarirati samo u vrijeme prevođenja, kao što su napomene samo s izvorom ili procesori napomena. Ne pojavljuju se u runtime classpath ili test classpath
  • compileOnlyApi - koristi se kada je potrebno u vrijeme sastavljanja i kada potrošačima moraju biti vidljivi na putu predavanja
  • runtimeOnly- koristi se za deklariranje ovisnosti koje su potrebne samo u vrijeme izvođenja i nisu dostupne u vrijeme kompajliranja
  • testImplementacija- potreban za sastavljanje testova
  • testCompileOnly- potrebno samo u vrijeme sastavljanja testa
  • testRuntimeOnly- potrebno samo za vrijeme izvođenja testa

Treba imati na umu da najnovije verzije Gradlea odbacuju neke konfiguracije poput sastaviti, testSastaviti, vrijeme izvođenja, i testRuntime. U vrijeme pisanja ovog članka, oni su još uvijek dostupni.

4. Vrste vanjskih ovisnosti

Krenimo u vrste vanjskih ovisnosti s kojima se susrećemo u skripti gradnje Gradle-a.

4.1. Ovisnosti modula

U osnovi, najčešći način proglašavanja ovisnosti je pozivanjem na spremište. Spremište Gradle zbirka je modula koje organizira skupina, Ime, i verzija.

Zapravo, Gradle uklanja zavisnosti iz navedenog spremišta unutar spremište blok:

spremišta {mavenCentral ()} ovisnosti {implementacija 'org.springframework.boot: spring-boot-starter: 2.3.4.RELEASE'}

4.2. Ovisnosti o datotekama

S obzirom na to da projekti ne koriste uvijek automatizirano upravljanje ovisnostima, neki projekti organiziraju ovisnosti kao dio izvornog koda ili lokalnog datotečnog sustava. Stoga moramo odrediti točno mjesto gdje su ovisnosti.

U tu svrhu možemo koristiti datoteke uključiti zbirku ovisnosti:

ovisnosti {runtimeOnly files ('libs / lib1.jar', 'libs / lib2.jar')}

Slično tome, možemo koristiti filetree uključiti hijerarhiju staklenka datoteke u direktoriju:

ovisnosti {runtimeOnly fileTree ('libs') {uključuju '* .jar'}}

4.3. Ovisnosti o projektu

Budući da jedan projekt može ovisiti o drugom za ponovnu upotrebu koda, Gradle nam nudi priliku da to učinimo.

Recimo da želimo izjaviti da naš projekt ovisi o podijeljeni projekt:

 ovisnosti {projekt implementacije (': shared')} 

4.4. Ovisnosti o Gradleu

U određenim slučajevima, poput razvijanja zadatka ili dodatka, možemo definirati ovisnosti koje pripadaju verziji Gradle koju koristimo:

ovisnosti {implementacija gradleApi ()}

5. buildScript

Kao što smo vidjeli ranije, možemo deklarirati vanjske ovisnosti našeg izvornog koda i testova unutar ovisnosti blok. Slično tome, buildScript blok omogućuje nam deklariranje ovisnosti gradle Gradle, poput dodataka treće strane i klasa zadataka. Osobito, bez a buildScript blok, možemo koristiti samo izvanredne značajke Gradlea.

U nastavku izjavljujemo da želimo koristiti dodatak Spring Boot preuzimajući ga s Maven Central:

buildscript {spremišta {mavenCentral ()} ovisnosti {classpath 'org.springframework.boot: spring-boot-gradle-plugin: 2.3.4.RELEASE'}} primijeni dodatak: 'org.springframework.boot'

Stoga moramo navesti izvor s kojeg ćemo preuzeti vanjske ovisnosti jer ne postoji zadana.

Gore opisano odnosi se na starije verzije Gradlea. Umjesto toga, u novijim verzijama moguće je koristiti sažetiji oblik:

dodaci {id 'org.springframework.boot' verzija '2.3.4.RELEASE'}

6. Zaključak

U ovom smo članku pogledali ovisnosti Gradlea, kako ih prijaviti i različite tipove konfiguracije.

S obzirom na ove točke, izvorni kod za ovaj članak dostupan je na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found