Opsezi ovisnosti Mavena

1. Uvod

Maven je jedan od najpopularnijih alata za izgradnju u ekosustavu Java, a jedna od njegovih osnovnih značajki je upravljanje ovisnostima.

U ovom ćemo članku opisati i istražiti mehanizam koji pomaže u upravljanju prijelaznim ovisnostima u Mavenovim projektima - opsezima ovisnosti.

2. Prijelazna ovisnost

Jednostavno rečeno, u Mavenu postoje dvije vrste ovisnosti direktno i prijelazni.

Izravne ovisnosti su one koje su izričito uključene u projekt. Oni se mogu uključiti u projekt pomoću oznake:

 junit junit 4.12 

S druge strane, prijelazne ovisnosti ovisnosti su koje zahtijevaju naše izravne ovisnosti. Potrebne prijelazne ovisnosti automatski uključuje u naš projekt Maven.

Možemo navesti sve ovisnosti, uključujući prijelazne ovisnosti u projektu, koristeći: mvn ovisnost: stablo naredba.

3. Opsezi ovisnosti

Opsezi ovisnosti mogu pomoći u ograničavanju tranzitivnosti ovisnosti i oni mijenjaju put klase za različite izgrađene zadatke. Maven ima 6 zadanih opsega ovisnosti.

I važno je razumjeti da svaki opseg - osim za uvoz - utječe na prijelazne ovisnosti.

3.1. Sastaviti

Ovo je zadani opseg kada nije naveden drugi opseg.

Ovisnosti s ovim opsegom dostupne su na stazi razreda projekta u svim zadacima gradnje i šire se na ovisne projekte.

Još važnije, ove su ovisnosti također prijelazne:

 commons-lang commons-lang 2.6 

3.2. Pod uvjetom

Ovaj opseg koristi se za označavanje ovisnosti koje bi tijekom izvođenja trebao pružiti JDK ili spremnik, otuda i naziv.

Dobar slučaj upotrebe za ovaj opseg bila bi web aplikacija postavljena u nekom spremniku, gdje spremnik već pruža neke knjižnice sam.

Na primjer, web poslužitelj koji već pruža Servlet API u vrijeme izvođenja, pa se u našem projektu te ovisnosti mogu definirati pomoću pod uvjetom opseg:

 osiguran javax.servlet servlet-api 2.5 

The pod uvjetom ovisnosti su dostupne samo u vrijeme prevođenja i u testnoj stazi projekta; štoviše, nisu prijelazni.

3.3. Vrijeme izvođenja

Ovisnosti s ovim opsegom potrebne su za vrijeme izvođenja, ali nisu potrebni za sastavljanje projektnog koda. Zbog toga su ovisnosti označene znakom vrijeme izvođenja opseg će biti prisutan u runtime i test classpath, ali oni će nedostajati u kompajliranju classpath.

Dobar primjer ovisnosti koje bi trebale koristiti opseg izvođenja je JDBC pokretački program:

 mysql mysql-connector-java 6.0.6 vrijeme izvođenja 

3.4. Test

Ovaj se opseg koristi da naznači da ovisnost nije potrebna u standardnom vremenu izvođenja aplikacije, već se koristi samo u testne svrhe. Test ovisnosti nisu prijelazne i prisutne su samo za putove klasa ispitivanja i izvršavanja.

Standardni slučaj upotrebe za ovaj opseg je dodavanje testne biblioteke poput JUnit u našu aplikaciju:

 test junit junit 4.12 

3.5. Sustav

Sustav opseg je mnogo sličan pod uvjetom opseg. Glavna razlika između ta dva opsega je u tome sustav zahtijeva od nas da izravno pokažemo na određenu jar u sustavu.

Važno je upamtiti gradnju projekta sa sustav ovisnosti opsega mogu propasti na različitim strojevima ako zavisnosti nisu prisutne ili se nalaze na mjestu različitom od onog systemPath pokazuje na:

 com.baeldung prilagođena ovisnost 1.3.2 sustav $ {project.basedir} /libs/custom-dependency-1.3.2.jar 

3.6. Uvoz

Ovaj je opseg dodan u Maven 2.0.9 i dostupan je samo za vrstu ovisnosti pom. O vrsti ovisnosti više ćemo govoriti u budućim člancima.

Uvoz pokazuje da bi ovu ovisnost trebalo zamijeniti svim učinkovitim ovisnostima deklariranim u svom POM-u:

 com.baeldung prilagođeni projekt 1.3.2 pom import 

4. Opseg i tranzitivnost

Svaki opseg ovisnosti utječe na prijelazne ovisnosti na svoj način. To znači da različite prijelazne ovisnosti mogu završiti u projektu s različitim opsezima.

Međutim, ovisnosti s opsezima pod uvjetom i test nikada neće biti uključeni u glavni projekt.

Zatim:

  • Za sastaviti opseg, sve ovisnosti s opseg izvođenja bit će uvučen s vrijeme izvođenja opseg, u projektu i sve ovisnosti s sastaviti opseg će se povući pomoću sastaviti opseg, u projektu
  • Za pod uvjetom opseg, oboje vrijeme izvođenja i sastaviti ovisnosti o opsegu će se povući pomoću pod uvjetom opseg, u projektu
  • Za test opseg, oboje vrijeme izvođenja i sastaviti prijelazne ovisnosti opsega uvući će se pomoću test opseg, u projektu
  • Za vrijeme izvođenja opseg, oboje vrijeme izvođenja i sastaviti prijelazne ovisnosti opsega uvući će se pomoću vrijeme izvođenja opseg, u projektu

5. Zaključak

U ovom smo se brzom vodiču usredotočili na opsege ovisnosti o Mavenu, njihovu svrhu i detalje o njihovom djelovanju.

Ako želite dublje istražiti Maven, dokumentacija je izvrsno mjesto za početak.