Vejledning til Maven-profiler

1. Oversigt

Maven-profiler kan bruges til at oprette tilpassede build-konfigurationersom at målrette mod et niveau af testgranularitet eller et specifikt implementeringsmiljø.

I denne vejledning lærer vi at arbejde med Maven-profiler.

2. Et grundlæggende eksempel

Normalt når vi løber mvn-pakke, enhedstestene udføres såvel. Men hvad hvis vi hurtigt vil pakke artefakten og køre den for at se om det fungerer?

Først opretter vi en ingen test profil, der indstiller maven.test.skip ejendom til rigtigt:

 ingen tests sandt 

Dernæst udfører vi profilen ved at køre mvn-pakke -Pno-tests kommando. Nu er artefakten oprettet, og testene springes over. I dette tilfælde er mvn-pakke -Dmaven.test.skip kommando ville have været lettere.

Dette var dog kun en introduktion til Maven-profiler. Lad os se på nogle mere komplekse opsætninger.

3. Deklarerende profiler

I det forrige afsnit så vi, hvordan man opretter en profil. Vi kan konfigurere så mange profiler, som vi vil ved at give dem unikke id'er.

Lad os sige, at vi ønskede at oprette en profil, der kun kørte vores integrationstest og en anden til et sæt mutationstest.

Vi vil begynde med at specificere en id for hver enkelt i vores pom.xml fil:

  integration-test mutation-tests 

Inden for hver profil element, vi kan konfigurere mange elementer såsom afhængigheder, plugins, ressourcer, finalName.

Så for eksemplet ovenfor kunne vi tilføje plugins og deres afhængighed separat for integrationstest og mutationstest.

At adskille test i profiler kan gøre standardbygningen hurtigere ved at lade det fokusere på f.eks. Enhedstestene.

3.1. Profilomfang

Nu har vi lige placeret disse profiler i vores pom.xml fil, der kun erklærer dem for vores projekt.

Men i Maven 3 kan vi faktisk tilføje profiler til et af tre steder:

  1. Projektspecifikke profiler går ind i projektets pom.xml fil
  2. Brugerspecifikke profiler går ind i brugerens settings.xml fil
  3. Globale profiler går ind i det globale settings.xml fil

Bemærk, at Maven 2 understøttede en fjerde placering, men dette blev fjernet i Maven 3.

Vi forsøger at konfigurere profiler i pom.xml når det er muligt. Årsagen er, at vi ønsker at bruge profilerne både på vores udviklingsmaskiner og på byggemaskinerne. Bruger settings.xml er vanskeligere og mere udsat for fejl, da vi selv skal distribuere det på tværs af bygningsmiljøer.

4. Aktivering af profiler

Når vi opretter en eller flere profiler vi kan begynde at bruge dem eller med andre ord aktivering dem.

4.1. Se hvilke profiler der er aktive

Lad os bruge hjælp: aktive-profiler mål at se, hvilke profiler der er aktive i vores standard build:

mvn hjælp: aktive-profiler

Faktisk, da vi ikke har aktiveret noget endnu, får vi:

Følgende profiler er aktive:

Nå, intet.

Vi aktiverer dem om et øjeblik. Men hurtigt er en anden måde at se, hvad der er aktiveret, at inkluderer maven-help-plugin i vores pom.xml og binde aktive-profiler mål til udarbejde fase:

   org.apache.maven.plugins maven-help-plugin 3.2.0 show-profiler kompilerer aktive-profiler 

Lad os nu komme til at bruge dem! Vi ser på et par forskellige måder.

4.2. Ved brug af -P

Faktisk så vi allerede en måde i starten, som vi kan aktivere profiler med -P argument.

Så lad os begynde med at aktivere integration-test profil:

mvn pakke -P integration-tests

Hvis vi bekræfter de aktive profiler, med maven-help-plugin eller den mvn help: active-profiles -P integration-tests kommando får vi følgende resultat:

Følgende profiler er aktive: - integrationstest

Hvis vi vil aktivere flere profiler på samme tid, bruger vi en komma-adskilt liste med profiler:

mvn pakke -P integration-tests, mutation-tests

4.3. Aktiv som standard

Hvis vi altid vil udføre en profil, kan vi som standard gøre en aktiv:

 integration-tests sandt 

Så kan vi løbe mvn-pakke uden at specificere profilerne, og vi kan kontrollere, at integration-test profilen er aktiv.

Men hvis vi kører kommandoen Maven og aktiverer en anden profil end activeByDefault profilen springes over. Så når vi løber mvn pakke -P mutation-tests så kun den mutationstest profilen er aktiv.

Når vi aktiverer på andre måder, activeByDefault profilen springes også over, som vi vil se i de næste sektioner.

4.4. Baseret på en ejendom

Vi kan aktivere profiler på kommandolinjen. Nogle gange er det dog mere praktisk, hvis de aktiveres automatisk. For eksempel, vi kan basere det på en -D systemegenskab:

 aktivt-på-ejendom-miljø 

Vi aktiverer nu profilen med mvn-pakke -Miljø kommando.

Det er også muligt at aktivere en profil, hvis en ejendom ikke er til stede:

 !miljø 

Eller vi kan aktivere profilen hvis ejendommen har en bestemt værdi:

 miljøtest 

Vi kan nu køre profilen med mvn-pakke -Miljø = test.

Endelig kan vi aktivere profilen, hvis ejendommen har en anden værdi end den angivne værdi:

 miljø! test 

4.5. Baseret på JDK Version

En anden mulighed er at aktivere en profil baseret på JDK, der kører på maskinen. I dette tilfælde vil vi aktivere profilen, hvis JDK-versionen starter med 11:

 aktiv-på-jdk-11 11 

Vi kan også bruge intervaller til JDK-versionen som forklaret i Maven Version Range Syntax.

4.6. Baseret på operativsystemet

Alternativt kan vi aktivere profilen baseret på nogle operativsystemoplysninger.

Og hvis vi ikke er sikre på det, kan vi først bruge mvn enforcer: display-info kommando, der giver følgende output på min maskine:

Maven Version: 3.5.4 JDK Version: 11.0.2 normaliseret som: 11.0.2 OS Info: Arch: amd64 Familie: windows Navn: windows 10 Version: 10.0

Derefter kan vi konfigurere en profil, der kun er aktiveret på Windows 10:

 active-on-windows-10 windows 10 Windows amd64 10.0 

4.7. Baseret på en fil

En anden mulighed er at køre en profil hvis en fil eksisterer eller er mangler.

Så lad os oprette en testprofil, der kun udføres, hvis den testrapport.html er endnu ikke til stede:

  target / testreport.html 

5. Deaktivering af en profil

Vi har set mange måder at aktivere profiler på, men nogle gange er vi også nødt til at deaktivere en.

For at deaktivere en profil kan vi bruge '!' eller '-'.

Så for at deaktivere aktiv-på-jdk-11 profil vi udfører mvn kompilere -P -active-on-jdk-11 kommando.

6. Konklusion

I denne artikel har vi set, hvordan vi arbejder med Maven-profiler, så vi kan oprette forskellige build-konfigurationer.

Profilerne hjælper med at udføre bestemte elementer i bygningen, når vi har brug for dem. Dette optimerer vores byggeproces og hjælper med at give hurtigere feedback til udviklere.

Du er velkommen til at kigge på det færdige pom.xml fil over på GitHub.