Neobvezna ovisnost u Mavenu

1. Pregled

Ovaj kratki vodič opisat će Mavenov i kako pomoću nje možemo smanjiti veličinu i opseg artefakta projekta Maven, poput RATA, EAR-a ili JAR-a.

Za osvježavanje na Mavenu pogledajte naš opsežni vodič.

2. Što je ?

Ponekad ćemo stvoriti Mavenov projekt koji će biti ovisnost za druge Mavenove projekte. Kada radite na takvom projektu, možda će biti potrebno uključiti jednu ili više ovisnosti koje su korisne samo za podskup značajki tog projekta.

Ako krajnji korisnik ne koristi taj podskup značajki, projekt i dalje tranzitivno uvlači te ovisnosti. To nepotrebno nadima veličinu korisničkog projekta, a može čak uvesti i sukobljene verzije ovisnosti s drugim ovisnostima o projektu.

U idealnom slučaju, trebali bismo podijeliti podskupinu značajki projekta u vlastiti modul i stoga ne zagađivati ​​ostatak projekta. Međutim, to nije uvijek praktično.

Da bismo izuzeli ove posebne ovisnosti iz glavnog projekta, možemo primijeniti Mavenovu označi im. To prisiljava svakog korisnika koji želi koristiti te ovisnosti da ih eksplicitno deklarira. Međutim, ne prisiljava te ovisnosti na projekt koji im ne treba.

3. Kako koristiti

Kao što ćemo vidjeti, možemo uključiti i element čija je vrijednost pravi kako bi bilo koja ovisnost o Mavenu bila neobavezna.

Pretpostavimo da imamo sljedeći pom projekt:

 ... project-with-optionals ... com.baeldung neobvezno-projekt 0.0.1-SNAPSHOT true 

U ovom primjeru, iako izborni-projekt je označen kao neobavezan, ostaje kao upotrebljiva ovisnost o projekt-s-opcijama kao da je tag nikad nije bio tamo.

Da bi se vidio učinak tag, moramo stvoriti novi projekt o kojem ovisi projekt-s-opcijama:

 ... glavni projekt ... com.baeldung projekt-s-opcijama 0.0.1-SNAPSHOT 

Sada ako pokušamo uputiti izborni-projekt iznutra glavni projekt, to vidimo izborni-projekt ne postoji. To je zato što oznaka sprječava da bude tranzitivno uključen.

Ako utvrdimo da trebamo izborni-projekt u našem glavni projekt, to jednostavno moramo proglasiti ovisnošću.

4. Zaključak

U ovom smo članku pogledali Mavenov označiti. Glavne prednosti upotrebe oznake su u tome što može smanjiti veličinu projekta i spriječiti sukobe verzija. Također smo vidjeli da oznaka ne utječe na projekt koji je koristi.

Izvorni kod u ovom članku dostupan je na Githubu.


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