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.