Veiledning til Maven-profiler

1. Oversikt

Maven-profiler kan brukes til å lage tilpassede byggekonfigurasjoner, som å målrette mot et nivå av testgranularitet eller et spesifikt distribusjonsmiljø.

I denne opplæringen lærer vi hvordan vi kan jobbe med Maven-profiler.

2. Et grunnleggende eksempel

Normalt når vi løper mvn-pakke, enhetstestene utføres også. Men hva om vi raskt vil pakke artefakten og kjøre den for å se om det fungerer?

Først oppretter vi en ingen tester profil som setter maven.test.skip eiendom til ekte:

 nei-tester sant 

Deretter kjører vi profilen ved å kjøre mvn-pakke -Pno-tester kommando. Nå er gjenstanden opprettet og testene hoppes over. I dette tilfellet mvn-pakke -Dmaven.test.skip kommandoen hadde vært lettere.

Dette var imidlertid bare en introduksjon til Maven-profiler. La oss ta en titt på noen mer komplekse oppsett.

3. Deklarerende profiler

I forrige avsnitt så vi hvordan du oppretter en profil. Vi kan konfigurere så mange profiler som vi vil ved å gi dem unike ID-er.

La oss si at vi ønsket å lage en profil som bare kjørte integrasjonstestene våre og en annen for et sett med mutasjonstester.

Vi begynner med å spesifisere en id for hver og en i vår pom.xml fil:

  integrasjonstester mutasjonstester 

Innenfor hver profil element, vi kan konfigurere mange elementer som avhengigheter, plugins, ressurser, finalName.

Så for eksemplet ovenfor kan vi legge til plugins og deres avhengighet separat for integrasjonstester og mutasjonstester.

Å skille tester i profiler kan gjøre standardbyggingen raskere ved å la den fokusere, for eksempel, bare på enhetstestene.

3.1. Profilomfang

Nå har vi bare plassert disse profilene i vår pom.xml fil, som kun erklærer dem for vårt prosjekt.

Men i Maven 3 kan vi faktisk legge til profiler på et av tre steder:

  1. Prosjekt-spesifikke profiler går inn i prosjektets pom.xml fil
  2. Brukerspesifikke profiler går inn i brukerens settings.xml fil
  3. Globale profiler går inn i det globale settings.xml fil

Merk at Maven 2 støttet et fjerde sted, men dette ble fjernet i Maven 3.

Vi prøver å konfigurere profiler i pom.xml når det er mulig. Årsaken er at vi ønsker å bruke profilene både på utviklingsmaskinene våre og på byggemaskinene. Bruker settings.xml er vanskeligere og feilutsatt da vi må distribuere det over bygningsmiljøer selv.

4. Aktivere profiler

Etter at vi oppretter en eller flere profiler vi kan begynne å bruke dem, eller med andre ord, aktivering dem.

4.1. Se hvilke profiler som er aktive

La oss bruke hjelp: aktive-profiler mål å se hvilke profiler som er aktive i vår standard build:

mvn help: active-profiles

Siden vi ikke har aktivert noe ennå, får vi:

Følgende profiler er aktive:

Ingenting.

Vi aktiverer dem om et øyeblikk. Men raskt er en annen måte å se hva som er aktivert å inkluderer maven-help-plugin i vår pom.xml og knyt aktive-profiler mål til kompilere fase:

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

La oss nå bruke dem! Vi vil se på noen forskjellige måter.

4.2. Ved hjelp av -P

Egentlig så vi allerede en måte i begynnelsen, det er at vi kan aktivere profiler med -P argument.

Så la oss begynne med å aktivere integrasjonstest profil:

mvn-pakke -P integrasjonstester

Hvis vi bekrefter de aktive profilene, med maven-help-plugin eller mvn help: active-profiles -P integration-tests kommandoen får vi følgende resultat:

Følgende profiler er aktive: - integrasjonstester

I tilfelle vi vil aktivere flere profiler samtidig, bruker vi en komma-separert liste over profiler:

mvn pakke -P integrasjonstester, mutasjonstester

4.3. Aktiv som standard

Hvis vi alltid vil utføre en profil, kan vi gjøre en aktiv som standard:

 integrasjonstester sanne 

Så kan vi løpe mvn-pakke uten å spesifisere profilene, og vi kan bekrefte at integrasjonstest profilen er aktiv.

Imidlertid, hvis vi kjører Maven-kommandoen og aktiverer en annen profil enn activeByDefault profilen hoppes over. Så når vi løper mvn pakke -P mutasjonstester da bare den mutasjonstester profilen er aktiv.

Når vi aktiverer på andre måter, activeByDefault profilen hoppes også over som vi vil se i de neste avsnittene.

4.4. Basert på en eiendom

Vi kan aktivere profiler på kommandolinjen. Noen ganger er det imidlertid mer praktisk hvis de aktiveres automatisk. For eksempel, vi kan basere det på en -D systemegenskap:

 aktivt miljø på miljøet 

Vi aktiverer nå profilen med mvn-pakke -Miljø kommando.

Det er også mulig å aktivere en profil hvis en eiendom ikke er til stede:

 !miljø 

Eller vi kan aktivere profilen hvis eiendommen har en spesifikk verdi:

 miljøtest 

Vi kan nå kjøre profilen med mvn-pakke -Miljø = test.

Til slutt kan vi aktivere profilen hvis eiendommen har en annen verdi enn den angitte verdien:

 miljø! test 

4.5. Basert på JDK Versjon

Et annet alternativ er å aktivere en profil basert på JDK som kjører på maskinen. I dette tilfellet vil vi aktivere profilen hvis JDK-versjonen starter med 11:

 aktiv-på-jdk-11 11 

Vi kan også bruke områder for JDK-versjonen som forklart i Maven Version Range Syntax.

4.6. Basert på operativsystemet

Alternativt kan vi aktivere profilen basert på noe operativsysteminformasjon.

Og hvis vi ikke er sikre på det, kan vi først bruke mvn håndhever: display-info kommando som gir følgende utdata på maskinen min:

Maven Versjon: 3.5.4 JDK Versjon: 11.0.2 normalisert som: 11.0.2 OS Info: Arch: amd64 Familie: windows Navn: windows 10 Versjon: 10.0

Etter det kan vi konfigurere en profil som bare er aktivert på Windows 10:

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

4.7. Basert på en fil

Et annet alternativ er å kjøre en profil hvis en fil eksisterer eller er savnet.

Så la oss lage en testprofil som bare kjøres hvis testrapport.html er ennå ikke til stede:

  mål / testrapport.html 

5. Deaktivere en profil

Vi har sett mange måter å aktivere profiler på, men noen ganger må vi også deaktivere en.

For å deaktivere en profil kan vi bruke ‘!’ eller ‘-‘.

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

6. Konklusjon

I denne artikkelen har vi sett hvordan vi kan arbeide med Maven-profiler, slik at vi kan lage forskjellige byggekonfigurasjoner.

Profilene hjelper til med å utføre spesifikke elementer i bygningen når vi trenger dem. Dette optimaliserer byggeprosessen vår og bidrar til å gi raskere tilbakemelding til utviklere.

Ta gjerne en titt på det ferdige pom.xml fil over på GitHub.


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