Doplnok Maven Enforcer

1. Prehľad

V tomto výučbe sa dozvieme o doplnku Maven Enforcer a o tom, ako ho môžeme použiť na zabezpečenie úrovne súladu v našom projekte.

Doplnok je obzvlášť užitočný, keď máme distribuované tímy roztrúsené po celom svete.

2. Závislosť

Aby sme doplnok mohli využiť v našom projekte, musíme do nášho pridať nasledujúcu závislosť pom.xml:

 org.apache.maven.plugins maven-enforcer-plugin 3.0.0-M2 

Najnovšia verzia doplnku je k dispozícii na serveri Maven Central.

3. Konfigurácia doplnku a ciele

Maven Enforcer má dva ciele: vymáhač: vymáhať a vymáhač: display-info.

The presadiť cieľ beží počas zostavovania projektu na vykonanie pravidiel špecifikovaných v konfigurácii, zatiaľ čo display-info cieľ zobrazuje aktuálne informácie o vstavaných pravidlách, ktoré sú prítomné v projekte pom.xml.

Definujme presadiť cieľ v exekúcie značka. Ďalej pridáme konfigurácia značka, ktorá drží znak pravidlá definície projektu:

... vynútiť vynútiť ...

4. Pravidlá Maven Enforcer

Kľúčové slovo presadiť dáva jemný náznak existencie pravidiel, ktoré treba dodržiavať. Takto funguje doplnok Maven Enforcer. Nakonfigurujeme to pomocou niektorých pravidiel, ktoré sa majú presadzovať počas fázy budovania projektu.

V tejto časti sa pozrieme na dostupné pravidlá, ktoré môžeme použiť na zvýšenie kvality našich projektov.

4.1. Zakázať duplicitnú závislosť

Vo viacmodulovom projekte, kde medzi rodičmi existuje vzťah rodič - dieťa POM, aby sa zabezpečilo, že v konečnom znení nebude duplikát závislosti POM pre projekt môže byť zložitá úloha. Ale s banDuplicatePomDependencyVersions Pravidlom je, že sa môžeme ľahko ubezpečiť, že náš projekt nie je bez závad.

Všetko, čo musíme urobiť, je pridať banDuplicatePomDependencyVersions značka do pravidlá časť konfigurácie pluginu:

...    ...

Ak chcete skontrolovať správanie pravidla, môžeme duplikovať jednu závislosť v pom.xml a bežať mvn čistý kompilát. Na konzole sa vytvoria nasledujúce chybové riadky:

... [UPOZORNENIE] Pravidlo 0: org.apache.maven.plugins.enforcer.BanDuplicatePomDependencyVersions zlyhalo so správou: V tomto projekte bol nájdený 1 duplikát deklarácie závislosti: - dependencies.dependency [io.vavr: vavr: jar] (dvakrát) [INFO] ----------------------------------------------- ------------------------- [INFO] BUILD FAILURE [INFO] ----------------- -------------------------------------------------- ----- [INFO] Celkový čas: 1,370 s [INFO] Dokončené o: 2019-02-19T10: 17: 57 + 01: 00 ...

4.2. Vyžadujte verzie Maven a Java

The requireMavenVersion a requireJavaVersion pravidlá umožňujú projektové uzamknutie požadovaných verzií Maven a Java. To pomôže eliminovať rozdiely, ktoré môžu vzniknúť pri použití rôznych verzií Maven a JDK vo vývojových prostrediach.

Poďme aktualizovať pravidlá časť konfigurácie pluginu:

 3.0   1.8 

Umožňujú nám flexibilne špecifikovať čísla verzií, pokiaľ sú v súlade so vzorom špecifikácie rozsahu verzií doplnku.

Obidve pravidlá ďalej akceptujú a správa parameter na zadanie vlastnej správy:

... 3.0 Neplatná verzia Maven. Mala by byť minimálne 3,0 ...

4.3. Vyžadovať premennú prostredia

Vďaka requireEnvironmentVariable pravidlom môžeme zabezpečiť, aby bola v prostredí vykonávania nastavená určitá premenná prostredia.

Môže sa opakovať, aby sa zmestilo viac ako jednej požadovanej premennej:

 ui kuchár 

4.4. Vyžadovať aktívny profil

Profily v Mavene nám pomáhajú konfigurovať vlastnosti, ktoré budú aktívne pri nasadení našej aplikácie do rôznych prostredí.

Následne môžeme použiť requireActiveProfile pravidlo, keď potrebujeme zabezpečiť, aby bol aktívny jeden alebo viac určených profilov, čím sa zaručí úspešné spustenie našej aplikácie:

 miestne, základňa Chýbajúce aktívne profily 

V úryvku vyššie sme použili správa vlastnosť na poskytnutie vlastnej správy, ktorá sa zobrazí v prípade zlyhania kontroly pravidiel.

4.5. Ostatné pravidlá

Plugin Maven Enforcer má mnoho ďalších pravidiel na podporu kvality a konzistencie projektu bez ohľadu na vývojové prostredie.

Doplnok má tiež príkaz na zobrazenie informácií o niektorých aktuálne nakonfigurovaných pravidlách:

MVN Enforcer: display-info

5. Vlastné pravidlá

Doteraz sme skúmali vstavané pravidlá pluginu. Teraz je čas pozrieť sa na vytvorenie nášho vlastného pravidla.

Najskôr musíme vytvoriť nový projekt Java, ktorý bude obsahovať naše vlastné pravidlo. Vlastným pravidlom je trieda Objekt že realizuje EnforceRule rozhranie a prepíše vykonať () metóda:

public void execute (EnforcerRuleHelper enforcerRuleHelper) hodí EnforcerRuleException {try {String groupId = (String) enforcerRuleHelper.evaluate ("$ {project.groupId}"); if (groupId == null ||! groupId.startsWith ("org.baeldung")) {hodiť novú EnforcerRuleException ("ID skupiny projektu nezačína na org.baeldung"); }} catch (ExpressionEvaluationException ex) {throw new EnforcerRuleException ("Unable to lookup an expression" + ex.getLocalizedMessage (), ex); }}

Naše vlastné pravidlo jednoducho skontroluje, či je cieľový projekt groupId začína s org.baeldung alebo nie.

Všimnite si, ako sa nemusíme vracať boolovský alebo čokoľvek také, čo naznačuje, že pravidlo nie je splnené. Len hodíme EnforcerRuleException s popisom čo je zle.

Naše vlastné pravidlo môžeme použiť tak, že ho pridáme ako závislosť do doplnku Maven Enforcer:

...    ...

Upozorňujeme, že ak projekt vlastných pravidiel nie je publikovaným artefaktom v Maven Central, môžeme ho nainštalovať do lokálneho repozitára Maven spustením mvn čistá inštalácia.

Toto ho sprístupní pri kompilácii cieľového projektu, ktorý má zásuvný modul Maven Enforcer. Ďalšie informácie nájdete v dokumentácii doplnku k vlastnému pravidlu.

Aby sme to videli v akcii, môžeme nastaviť groupId vlastníctvo projektu s Enforcer Plugin na čokoľvek iné ako „org.baeldung“ a spustiť mvn čistý kompilát.

6. Záver

V tomto rýchlom výučbe sme videli, ako môže byť doplnok Maven Enforcer užitočným doplnkom k našej existujúcej truhlici doplnkov. Schopnosť písať vlastné pravidlá rozširuje rozsah jej použitia.

Upozorňujeme, že je potrebné odkomentovať závislosti a pravidlo pre príklad vlastného pravidla v úplnom príklade zdrojového kódu, ktorý je k dispozícii na stránkach GitHub.


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