Dodatak Maven Enforcer

1. Pregled

U ovom uputstvu naučit ćemo o dodatku Maven Enforcer i kako ga možemo koristiti za jamčenje razine usklađenosti s našim projektom.

Dodatak je posebno koristan kada distribuiramo timove raštrkane po cijelom svijetu.

2. Ovisnost

Da bismo koristili dodatak u našem projektu, moramo dodati sljedeću ovisnost o našem pom.xml:

 org.apache.maven.plugins maven-prisilnik-dodatak 3.0.0-M2 

Najnovija verzija dodatka dostupna je na Maven Central.

3. Konfiguracija dodatka i ciljevi

Maven Enforcer ima dva cilja: izvršitelj: prisiliti i izvršitelj: display-info.

The provoditi Cilj se izvodi tijekom gradnje projekta za izvršavanje pravila navedenih u konfiguraciji, dok display-info Cilj pokazuje trenutne informacije o ugrađenim pravilima koja su prisutna u projektima pom.xml.

Definirajmo provoditi cilj u pogubljenja označiti. Nadalje, dodati ćemo konfiguracija oznaka koja sadrži pravila definicije projekta:

... prisiliti prisiliti ...

4. Maven Enforcer pravila

Ključna riječ provoditi daje suptilan prijedlog postojanja pravila kojih se treba pridržavati. Ovako radi dodatak Maven Enforcer. Konfiguriramo ga s nekim pravilima koja se trebaju provoditi tijekom faze izrade projekta.

U ovom ćemo odjeljku pogledati dostupna pravila koja možemo primijeniti na naše projekte kako bismo poboljšali njihovu kvalitetu.

4.1. Zabraniti dvostruku ovisnost

U projektu s više modula, u kojem postoji odnos roditelja i djeteta POM-ovi, osiguravajući da u efektivnom finalu nema duplikata ovisnosti POM jer projekt može biti nezgodan zadatak. Ali, s banDuplicatePomDependencyVersions U pravilu se lako možemo pobrinuti da naš projekt nema takvih kvarova.

Sve što trebamo učiniti je dodati banDuplicatePomDependencyVersions oznaka na pravila odjeljak konfiguracije dodatka:

...    ...

Da bismo provjerili ponašanje pravila, možemo duplicirati jednu ovisnost u pom.xml i trči mvn čista kompilacija. Na konzoli će proizvesti sljedeće redove pogrešaka:

... [UPOZORENJE] Pravilo 0: org.apache.maven.plugins.enforcer.BanDuplicatePomDependencyVersions nije uspjelo s porukom: Pronađena je 1 duplikata izjave o ovisnosti u ovom projektu: - dependences.dependency [io.vavr: vavr: jar] (2 puta) [INFO] ------------------------------------------------ ------------------------- [INFO] IZGRADNJA KVARA [INFO] ----------------- -------------------------------------------------- ----- [INFO] Ukupno vrijeme: 1.370 s [INFO] Završeno u: 2019-02-19T10: 17: 57 + 01: 00 ...

4.2. Zahtijeva Maven i Java verziju

The requireMavenVersion i requireJavaVersion pravila omogućuju zaključavanje zahtijevanih verzija Mavena i Jave u cijelom projektu. To će pomoći u uklanjanju razlika koje bi mogle nastati korištenjem različitih verzija Mavena i JDK u razvojnim okruženjima.

Ažurirajmo pravila odjeljak konfiguracije dodatka:

 3.0   1.8 

Oni nam omogućuju fleksibilno određivanje brojeva verzija, pod uvjetom da su u skladu s uzorkom specifikacije raspona verzija dodatka.

Nadalje, oba pravila također prihvaćaju a poruka parametar za specificiranje prilagođene poruke:

... 3.0 Nevažeća verzija Mavena. Trebao bi biti barem 3,0 ...

4.3. Zahtijeva varijablu okoline

Uz requireEnvironmentVariable pravilom možemo osigurati da je određena varijabla okoline postavljena u izvršnom okruženju.

Može se ponoviti za smještaj više od jedne tražene varijable:

 ui kuhati 

4.4. Zahtijeva aktivni profil

Profili u Mavenu pomažu nam da konfiguriramo svojstva koja će biti aktivna kada se naša aplikacija rasporedi u različita okruženja.

Slijedom toga, možemo koristiti requireActiveProfile pravilo kada trebamo osigurati da su aktivni jedan ili više navedenih profila, što jamči uspješno izvršavanje naše prijave:

 local, base Nedostaju aktivni profili 

U gornjem isječku koristili smo poruka svojstvo za pružanje prilagođene poruke koja se prikazuje ako provjera pravila ne uspije.

4.5. Ostala pravila

Dodatak Maven Enforcer ima mnoga druga pravila za promicanje kvalitete i dosljednosti projekata, bez obzira na razvojno okruženje.

Također, dodatak ima naredbu za prikaz informacija o nekim trenutno konfiguriranim pravilima:

mvn provoditelj: display-info

5. Prilagođena pravila

Do sada smo istraživali ugrađena pravila dodatka. Sada je vrijeme da pogledamo stvaranje vlastitog prilagođenog pravila.

Prvo, moramo stvoriti novi Java projekt koji će sadržavati naše prilagođeno pravilo. Prilagođeno pravilo je klasa Objekt da provodi EnforceRule sučelje i poništava izvršiti() metoda:

izvršavanje javne praznine (EnforcerRuleHelper princerRuleHelper) baca EnforcerRuleException {try {String groupId = (String) prisilnikRuleHelper.evaluate ("$ {project.groupId}"); if (groupId == null ||! groupId.startsWith ("org.baeldung")) {throw new EnforcerRuleException ("ID projektne grupe ne započinje s org.baeldung"); }} catch (ExpressionEvaluationException ex) {throw new EnforcerRuleException ("Nije moguće potražiti izraz" + ex.getLocalizedMessage (), ex); }}

Naše prilagođeno pravilo jednostavno provjerava je li ciljni projekt groupId počinje sa org.baeldung ili ne.

Primijetite kako se ne moramo vratiti boolean ili bilo što kao takvo što ukazuje da pravilo nije zadovoljeno. Samo bacimo EnforcerRuleException s opisom onoga što nije u redu.

Naše prilagođeno pravilo možemo koristiti dodavanjem kao ovisnosti dodatku Maven Enforcer:

...    ...

Imajte na umu da ako projekt prilagođenog pravila nije objavljeni artefakt na Maven Central, možemo ga instalirati u lokalni Maven repo pokretanje mvn čista instalacija.

To će ga učiniti dostupnim pri sastavljanju ciljnog projekta koji ima dodatak Maven Enforcer. Da biste saznali više, pogledajte dokumentaciju dodatka za prilagođeno pravilo.

Da bismo ga vidjeli na djelu, možemo postaviti groupId svojstvo projekta s dodatkom Enforcer na bilo što drugo osim na „org.baeldung“ i pokrenite mvn čista kompilacija.

6. Zaključak

U ovom smo brzom vodiču vidjeli kako dodatak Maven Enforcer može biti koristan dodatak našoj postojećoj škrinji dodataka. Sposobnost pisanja prilagođenih pravila poboljšava njegov opseg primjene.

Napominjemo da moramo ukloniti komentare o ovisnostima i pravilu za primjer prilagođenog pravila u cjelovitom primjeru izvornog koda koji je dostupan na GitHubu.