Maven Enforcer-plugin

1. Oversigt

I denne vejledning vil vi lære om Maven Enforcer Plugin, og hvordan vi kan bruge det til at garantere niveauet for overholdelse i vores projekt.

Pluginet er især praktisk, når vi har distribuerede hold spredt over hele kloden.

2. Afhængighed

For at gøre brug af pluginet i vores projekt skal vi tilføje følgende afhængighed til vores pom.xml:

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

Den seneste version af pluginet er tilgængelig på Maven Central.

3. Plugin-konfiguration og mål

Maven Enforcer har to mål: håndhæver: håndhæve og håndhæver: display-info.

Det håndhæve mål kører under en projektbygning for at udføre regler, der er specificeret i konfigurationen, mens display-info mål viser aktuelle oplysninger om de indbyggede regler, der er til stede i projektets pom.xml.

Lad os definere håndhæve mål i henrettelser tag. Desuden tilføjer vi konfiguration tag, der holder regler definitioner for projektet:

... håndhæve håndhæve ...

4. Maven Enforcer-regler

Nøgleordet håndhæve giver et subtilt forslag om eksistensen af ​​regler at overholde. Sådan fungerer Maven Enforcer-pluginet. Vi konfigurerer det med nogle regler, der skal håndhæves i projektets byggefase.

I dette afsnit vil vi se på de tilgængelige regler, som vi kan anvende på vores projekter for at forbedre deres kvalitet.

4.1. Forbud duplikatafhængighed

I et multimodulprojekt, hvor der findes et forhold mellem forældre og barn POM'er, sikre, at der ikke er nogen duplikat af afhængighed i den effektive finale POM for et projekt kan være en vanskelig opgave. Men med banDuplicatePomDependencyVersions regel, kan vi let sikre os, at vores projekt er fri for en sådan fejl.

Alt, hvad vi skal gøre er at tilføje banDuplicatePomDependencyVersions tag til regler afsnit af plugin-konfigurationen:

...    ...

For at kontrollere regelens opførsel kan vi duplikere en afhængighed i pom.xml og løb mvn ren kompilering. Det producerer følgende fejllinjer på konsollen:

... [ADVARSEL] Regel 0: org.apache.maven.plugins.enforcer.BanDuplicatePomDependencyVersions mislykkedes med besked: Fandt 1 duplikatafhængighedserklæring i dette projekt: - dependencies.dependency [io.vavr: vavr: jar] (2 gange) [INFO] ------------------------------------------------------- ------------------------- [INFO] BYGG FEJL [INFO] ----------------- -------------------------------------------------- ----- [INFO] Samlet tid: 1.370 s [INFO] Færdig ved: 2019-02-19T10: 17: 57 + 01: 00 ...

4.2. Kræv Maven- og Java-version

Det requireMavenVersion og kræver JavaVersion regler muliggør en projektdækkende låsning af henholdsvis krævede Maven- og Java-versioner. Dette hjælper med at eliminere den forskel, der kan opstå ved at bruge forskellige versioner af Maven og JDK i udviklingsmiljøer.

Lad os opdatere regler afsnit af plugin-konfigurationen:

 3.0   1.8 

Disse giver os mulighed for at specificere versionsnumrene på en fleksibel måde, så længe de overholder plugins versionspecifikationsmønster.

Desuden accepterer begge regler også a besked parameter til angivelse af en brugerdefineret besked:

... 3.0 Ugyldig Maven-version. Det skal i det mindste være 3,0 ...

4.3. Kræver variabel i miljøet

Med requireEnvironmentVariable regel kan vi sikre, at en bestemt miljøvariabel er indstillet i eksekveringsmiljøet.

Det kan gentages for at rumme mere end en krævet variabel:

 ui kok 

4.4. Kræv aktiv profil

Profiler i Maven hjælper os med at konfigurere egenskaber, der er aktive, når vores applikation distribueres til forskellige miljøer.

Derfor kan vi bruge requireActiveProfile reglen, når vi skal sikre, at en eller flere specificerede profiler er aktive, hvilket garanterer en vellykket udførelse af vores ansøgning:

 lokal, base Manglende aktive profiler 

I uddraget ovenfor brugte vi besked egenskab til at give en brugerdefineret besked, der skal vises, hvis regelkontrol mislykkes.

4.5. Andre regler

Maven Enforcer-pluginet har mange andre regler for at fremme projektkvalitet og konsistens uanset udviklingsmiljøet.

Plugin har også en kommando til at vise info om nogle aktuelt konfigurerede regler:

mvn enforcer: display-info

5. Brugerdefinerede regler

Indtil videre har vi udforsket de indbyggede regler for pluginet. Nu er det tid til at se på at skabe vores egen brugerdefinerede regel.

Først skal vi oprette et nyt Java-projekt, der indeholder vores brugerdefinerede regel. En brugerdefineret regel er en klasse Objekt at implementerer EnforceRule interface og tilsidesætter udføre () metode:

offentlig ugyldig udførelse (EnforcerRuleHelper enforcerRuleHelper) kaster EnforcerRuleException {prøv {String groupId = (String) enforcerRuleHelper.evaluate ("$ {project.groupId}"); if (groupId == null ||! groupId.startsWith ("org.baeldung")) {throw new EnforcerRuleException ("Projektgruppe-id starter ikke med org.baeldung"); }} catch (ExpressionEvaluationException ex) {throw new EnforcerRuleException ("Unable to lookup an expression" + ex.getLocalizedMessage (), ex); }}

Vores brugerdefinerede regel kontrollerer simpelthen, om målprojektet er groupId starter med org.baeldung eller ikke.

Læg mærke til, hvordan vi ikke behøver at vende tilbage boolsk eller noget som sådan for at indikere, at reglen ikke er opfyldt. Vi kaster bare en EnforcerRuleException med en beskrivelse af hvad der er galt.

Vi kan bruge vores brugerdefinerede regel ved at tilføje den som en afhængighed af Maven Enforcer-pluginet:

...    ...

Bemærk, at hvis det tilpassede regelprojekt ikke er en offentliggjort artefakt på Maven Central, kan vi installere det i den lokale Maven-repo ved at køre mvn ren installation.

Dette gør det tilgængeligt ved kompilering af det målprojekt, der har Maven Enforcer Plugin. Se plugins dokumentation for den brugerdefinerede regel for at lære mere.

For at se det i aktion kan vi indstille groupId ejendom af projektet med Enforcer Plugin til noget andet end “org.baeldung” og køre mvn ren kompilering.

6. Konklusion

I denne hurtige vejledning så vi, hvordan Maven Enforcer Plugin kan være en nyttig tilføjelse til vores eksisterende kiste af plugins. Evnen til at skrive tilpassede regler forbedrer dets anvendelsesområde.

Bemærk, at vi er nødt til at fjerne bemærkningerne om afhængighederne og reglen for eksemplet med tilpasset regel i det komplette eksempel på kildekoden, der er tilgængelig på GitHub.


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