Függőségkezelés Gradle-ben

1. Áttekintés

Ebben az oktatóanyagban megvizsgáljuk a függőségek deklarálását egy Gradle build szkriptben. Példaként a Gradle 6.7-et fogjuk használni.

2. Tipikus felépítés

Kezdjük egy egyszerű Gradle szkriptel a Java projektekhez:

plugins {id 'java'} adattárak {mavenCentral ()} függőségek {implementáció 'org.springframework.boot: spring-boot-starter: 2.3.4.RELEASE' testImplementation 'org.springframework.boot: spring-boot-starter-test : 2.3.4.KÖZLEMÉNY '}

Mint fent látható, három kódblokkunk van: bővítmények, adattárak, és függőségek.

Először is a bővítmények blokk azt mondja nekünk, hogy ez egy Java projekt. Másodszor, a függőségek blokk deklarálja a verziót 2.3.4.A rugós-bakancs-indító a projekt termelési forráskódjának összeállításához szükséges függőség. Ezenkívül azt is megállapítja, hogy a projekt tesztcsomagjának szüksége van tavasz-csomagtartó-indító-teszt összeállít.

A Gradle build az összes függőséget lehúzza a Maven Central adattárból, amint azt a adattárak Blokk.

Koncentráljunk arra, hogyan definiálhatjuk a függőségeket.

3. Függőségi konfigurációk

Különböző konfigurációk léteznek, amelyekben deklarálhatjuk a függőségeket. E tekintetben választhatunk, hogy többé-kevésbé pontosak vagyunk, amint azt később láthatjuk.

3.1. A függőségek bejelentése

Első lépésként a konfiguráció 4 részből áll:

  • csoport - egy szervezet, vállalat vagy projekt azonosítója
  • név - függőség azonosító
  • változat - amelyet importálni akarunk
  • osztályozó - hasznos a függőségek azonos megkülönböztetésére csoport, név, és változat

Kétféle formában deklarálhatjuk a függőségeket. A szerződéses formátum lehetővé teszi számunkra, hogy a függőséget a-ként deklaráljuk Húr:

implementáció 'org.springframework.boot: spring-boot-starter: 2.3.4.RELEASE'

Ehelyett a kibővített formátum lehetővé teszi számunkra, hogy a-ként írjuk Térkép:

megvalósítási csoport:'org.springframework.boot', név: 'spring-boot-starter', verzió: '2.3.4.RELEASE'

3.2. A konfiguráció típusai

Ezenkívül a Gradle számos függőségi konfigurációs típust kínál:

  • api - arra használják, hogy a függőségeket egyértelművé tegyék, és lássák őket az osztályúton. Például egy könyvtár megvalósításakor, hogy az átlátható legyen a könyvtár fogyasztói
  • végrehajtás- szükségesek a gyártási forráskód összeállításához, és tisztán belsőek. Nincsenek kitéve a csomagoláson kívül
  • összeállítaniCsak- akkor használják, ha csak fordítás idején kell deklarálni őket, például csak forráskódú jelölések vagy annotációs processzorok. Nem jelennek meg a futási osztályú vagy a teszt osztályúton
  • compileOnlyApi - akkor használják, amikor az összeállítás idején szükséges, és amikor a fogyasztók számára láthatónak kell lenniük az osztályban
  • futásidejűCsak- olyan függőségek deklarálására szolgál, amelyek csak futás közben szükségesek, és fordításkor nem érhetők el
  • testVégrehajtás- tesztek összeállításához szükséges
  • testCompileOnly- csak a teszt fordítási időpontjában szükséges
  • testRuntimeOnly- csak tesztfutás közben szükséges

Meg kell jegyeznünk, hogy a Gradle legújabb verziói elavulnak bizonyos konfigurációkat, például összeállítani, testCompile, futási idő, és testRuntime. Az írás idején még rendelkezésre állnak.

4. A külső függőségek típusai

Mélyítsük el azokat a külső függőségeket, amelyekkel egy Gradle build szkriptben találkozunk.

4.1. A modul függőségei

Alapvetően a függőség deklarálásának leggyakoribb módja a lerakat hivatkozása. A Gradle repository a modulok gyűjteménye, amelyet a csoport, név, és változat.

Ami azt illeti, Gradle lehúzza a függőségeket a megadott tárolóból a adattár Blokk:

adattárak {mavenCentral ()} függőségek {implementáció 'org.springframework.boot: spring-boot-starter: 2.3.4.RELEASE'}

4.2. Fájlfüggőségek

Tekintettel arra, hogy a projektek nem mindig használnak automatikus függőségkezelést, egyes projektek a függőségeket a forráskód vagy a helyi fájlrendszer részeként szervezik. Így meg kell adnunk a pontos helyet, ahol a függőségek vannak.

Erre a célra felhasználhatjuk fájlokat függőséggyűjtemény felvétele:

függőségek {futásidejű Csak fájlok ('libs / lib1.jar', 'libs / lib2.jar')}

Hasonlóképpen használhatjuk filetree hierarchiáját tartalmazza befőttes üveg fájlok egy könyvtárban:

függőségek {runtimeOnly fileTree ('libs') {include '* .jar'}}

4.3. Projektfüggőségek

Mivel az egyik projekt a másiktól függhet a kód újrafelhasználásán, Gradle lehetőséget kínál nekünk erre.

Tegyük fel, hogy kijelenteni akarjuk, hogy a projektünk a megosztva projekt:

 függőségek {megvalósítási projekt (': megosztott')} 

4.4. Gradle függőségek

Bizonyos esetekben, például egy feladat vagy egy plugin fejlesztésekor, meghatározhatjuk az általunk használt Gradle verzióhoz tartozó függőségeket:

függőségek {implementáció gradleApi ()}

5. buildScript

Mint korábban láttuk, deklarálhatjuk a forráskód és a tesztek külső függőségeit a függőségek Blokk. Hasonlóképpen a buildScript blokk lehetővé teszi számunkra, hogy deklaráljuk a Gradle build függőségeit, például harmadik féltől származó beépülő modulokat és feladatosztályokat. Különösen a nélkül buildScript blokkban csak a Gradle out-of-the-box funkciókat használhatjuk.

Az alábbiakban kijelentjük, hogy a Spring Boot beépülő modult szeretnénk használni a Maven Central-ból való letöltéssel:

buildscript {repositories {mavenCentral ()} függőségek {classpath 'org.springframework.boot: spring-boot-gradle-plugin: 2.3.4.RELEASE'}} plugin alkalmazása: 'org.springframework.boot'

Ezért meg kell adnunk azt a forrást, amelyről letölteni fogjuk a külső függőségeket, mert nincs alapértelmezett.

A fent leírtak a Gradle régebbi verzióival kapcsolatosak. Ehelyett az újabb verziókban tömörebb formát lehet használni:

bővítmények {id 'org.springframework.boot' version '2.3.4.RELEASE'}

6. Következtetés

Ebben a cikkben megvizsgáltuk a Gradle-függőségeket, azok deklarálásának módját és a különböző konfigurációs típusokat.

Ezeket a pontokat figyelembe véve a cikk forráskódja elérhető a GitHubon.