Maven Enforcer plugin

1. Áttekintés

Ebben az oktatóanyagban megismerjük a Maven Enforcer beépülő modult és azt, hogy miként tudjuk garantálni a projekt megfelelőségi szintjét.

A plugin különösen akkor hasznos, ha csapatokat osztunk szétszórva az egész világon.

2. Függőség

A projektünkben a beépülő modul használatához a következő függőséget kell hozzáadnunk pom.xml:

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

A plugin legújabb verziója elérhető a Maven Central oldalon.

3. A beépülő modul beállítása és céljai

A Maven Enforcer-nek két célja van: érvényesítő: érvényesíteni és érvényesítő: display-info.

A érvényesíteni A cél a projekt összeállításakor fut a konfigurációban megadott szabályok végrehajtásához, míg a display-info A cél az aktuális információkat mutatja a beépített szabályokról, amelyek jelen vannak a projektben pom.xml.

Határozzuk meg a érvényesíteni cél a kivégzések címke. Továbbá hozzáadjuk a konfiguráció címke, amely a szabályok a projekt definíciói:

... kényszeríteni az érvényesítést ...

4. Maven Enforcer szabályok

A kulcsszó érvényesíteni finom javaslatot ad a betartandó szabályok létezésére. Így működik a Maven Enforcer plugin. Konfigurálunk néhány olyan szabályt, amelyeket be kell tartani a projekt építési szakaszában.

Ebben a részben megvizsgáljuk azokat a rendelkezésre álló szabályokat, amelyeket a projektjeinkre alkalmazhatunk, hogy javítsuk azok minőségét.

4.1. Tiltsa le a párhuzamos függőséget

Több modulos projektben, ahol a szülő-gyermek kapcsolat létezik POM-ok, biztosítva, hogy a tényleges döntőben ne legyen ismétlődő függőség POM mert egy projekt bonyolult feladat lehet. De, a banDuplicatePomDependencyVersions szabály, könnyen megbizonyosodhatunk arról, hogy a projektünkben nincs-e ilyen hiba.

Csak annyit kell tennünk, hogy hozzáadjuk a banDuplicatePomDependencyVersions címke a szabályok a plugin konfiguráció szakasza:

...    ...

A szabály viselkedésének ellenőrzéséhez duplikálhatunk egy függőséget pom.xml és futni mvn tiszta fordítás. A következő hibasorokat fogja létrehozni a konzolon:

... [FIGYELMEZTETÉS] 0. szabály: org.apache.maven.plugins.enforcer.BanDuplicatePomDependencyVersions meghiúsult az üzenettel: A projektben 1 ismétlődő függőségi nyilatkozat található: - dependencies.dependency [io.vavr: vavr: jar] (2 alkalommal) [INFO] ----------------------------------------------- ------------------------- [INFO] ÉPÍTÉSI HIBA [INFO] ----------------- -------------------------------------------------- ----- [INFO] Teljes idő: 1.370 s [INFO] Befejezés dátuma: 2019-02-19T10: 17: 57 + 01: 00 ...

4.2. Maven és Java verzió szükséges

A requiredMavenVersion és igényelJavaVersion szabályok lehetővé teszik a szükséges Maven-, illetve Java-verziók projekt-szintű zárolását. Ez segít kiküszöbölni azokat a különbségeket, amelyek a Maven és a JDK különböző verzióinak fejlesztői környezetekben történő használatából adódhatnak.

Frissítsük a szabályok a plugin konfiguráció szakasza:

 3.0   1.8 

Ezek lehetővé teszik számunkra a verziószámok rugalmas megadását, amennyiben megfelelnek a plugin verziótartomány specifikációs mintájának.

Továbbá mindkét szabály elfogadja a üzenet paraméter az egyéni üzenet megadásához:

... 3.0 Érvénytelen Maven verzió. Legalább 3,0 ...

4.3. Környezeti változó megkövetelése

A ... val requiredEnvironmentVariable szabály, biztosíthatjuk, hogy egy bizonyos környezeti változó be legyen állítva a végrehajtási környezetben.

Megismételhető, hogy egynél több szükséges változó befogadására kerüljön sor:

 ui szakács 

4.4. Aktív profil megkövetelése

A Maven profiljai segítenek konfigurálni azokat a tulajdonságokat, amelyek aktívak lesznek, amikor alkalmazásunkat különböző környezetekbe telepítik.

Következésképpen használhatjuk a requiredActiveProfile szabály, amikor biztosítanunk kell, hogy egy vagy több megadott profil aktív legyen, garantálva ezzel alkalmazásunk sikeres végrehajtását:

 helyi, alap Hiányzó aktív profilok 

A fenti részletben a üzenet tulajdonság egyéni üzenetet ad, amely megmutatja, ha a szabályellenőrzés sikertelen.

4.5. Egyéb szabályok

A Maven Enforcer plugin számos más szabályt tartalmaz a projekt minőségének és következetességének elősegítésére, a fejlesztési környezettől függetlenül.

Ezenkívül a plugin rendelkezik egy paranccsal, amely információkat jelenít meg néhány jelenleg konfigurált szabályról:

mvn enforcer: display-info

5. Egyedi szabályok

Eddig a plugin beépített szabályait vizsgáltuk. Itt az ideje megvizsgálni saját egyéni szabályunk létrehozását.

Először létre kell hoznunk egy új Java projektet, amely tartalmazza az egyedi szabályunkat. Az egyéni szabály egy osztály Tárgy hogy végrehajtja a EnforceRule interfész és felülírja a végrehajtani () módszer:

public void execute (EnforcerRuleHelper enforcerRuleHelper) dobja az EnforcerRuleException {try {String groupId = (String) enforcerRuleHelper.evaluate ("$ {project.groupId}"); if (groupId == null ||! groupId.startsWith ("org.baeldung")) {{dobjon új EnforcerRuleException-t ("A projektcsoport azonosítója nem az org.baeldung-tal kezdődik"); }} catch (ExpressionEvaluationException ex) {dobja az új EnforcerRuleException ("Nem lehet kifejezést keresni" + ex.getLocalizedMessage (), ex); }}

Egyéni szabályunk egyszerűen ellenőrzi, hogy a célprojekt megfelel-e groupId azzal kezdődik org.baeldung vagy nem.

Figyeljük meg, hogy nem kell visszatérnünk logikai vagy bármi, ami a szabályt jelzi, nem teljesül. Csak dobunk egy EnforcerRuleException leírással, hogy mi a baj.

Használhatjuk egyedi szabályunkat, ha hozzáadjuk a Maven Enforcer plugin függőségéhez:

...    ...

Felhívjuk figyelmét, hogy ha az egyedi szabály projekt nem publikált tárgy a Maven Centralon, akkor telepíthetjük a helyi Maven repóba a mvn tiszta telepítés.

Ez elérhetővé teszi a Maven Enforcer beépülő modult tartalmazó célprojekt összeállításakor. További információért kérjük, olvassa el a beépülő modul dokumentációját.

Ahhoz, hogy működés közben lássuk, beállíthatjuk a groupId a projekt tulajdonosa az Enforcer pluginnel az org.baeldungon kívül másra, és futtassa mvn tiszta fordítás.

6. Következtetés

Ebben a gyors bemutatóban azt láttuk, hogy a Maven Enforcer beépülő modul hasznos kiegészítő lehet-e a meglévő pluginjainkhoz. Az egyedi szabályok megírásának képessége növeli alkalmazási körét.

Felhívjuk figyelmét, hogy a GitHubon elérhető teljes példakód-forráskódban törölni kell az egyedi szabályok példájának függőségeit és szabályát.