Gids voor Maven-profielen

1. Overzicht

Maven-profielen kunnen worden gebruikt om aangepaste buildconfiguraties te maken, zoals het targeten van een niveau van granulariteit van de test of een specifieke implementatieomgeving.

In deze zelfstudie leren we hoe u met Maven-profielen kunt werken.

2. Een eenvoudig voorbeeld

Normaal gesproken als we rennen mvn-pakket, de unit tests worden uitgevoerd ook. Maar wat als we het artefact snel willen verpakken en uitvoeren om te zien of het werkt?

Eerst maken we een geen tests profiel dat de maven.test.skip eigendom aan waar:

 geen-tests waar 

Vervolgens voeren we het profiel uit door het mvn-pakket -Pno-tests opdracht. Nu wordt het artefact gemaakt en worden de tests overgeslagen. In dit geval is het mvn-pakket -Dmaven.test.skip commando zou gemakkelijker zijn geweest.

Dit was echter slechts een inleiding tot Maven-profielen. Laten we eens kijken naar wat meer complexe opstellingen.

3. Profielen declareren

In de vorige sectie hebben we gezien hoe je één profiel aanmaakt. We kunnen zoveel profielen configureren als we willen door ze unieke id's te geven.

Laten we zeggen dat we een profiel wilden maken dat alleen onze integratietests uitvoerde en een ander voor een reeks mutatietests.

We zouden beginnen met het specificeren van een ID kaart voor elk in onze pom.xml het dossier:

  integratietesten mutatietesten 

Binnen elk profiel element, we kunnen veel elementen configureren, zoals afhankelijkheden, plug-ins, middelen, finalName.

Dus voor het bovenstaande voorbeeld zouden we plug-ins en hun afhankelijkheden afzonderlijk kunnen toevoegen voor integratie-tests en mutatietesten.

Het scheiden van tests in profielen kan de standaard build sneller maken door deze bijvoorbeeld te laten focussen op alleen de unit tests.

3.1. Profielbereik

Nu hebben we deze profielen zojuist in ons pom.xml bestand, dat ze alleen voor ons project declareert.

Maar in Maven 3 kunnen we eigenlijk profielen toevoegen aan een van de drie locaties:

  1. Projectspecifieke profielen gaan in op het project pom.xml het dossier
  2. Gebruikersspecifieke profielen gaan naar de gebruikersprofielen settings.xml het dossier
  3. Globale profielen gaan naar het globale settings.xml het dossier

Merk op dat Maven 2 een vierde locatie ondersteunde, maar deze werd verwijderd in Maven 3.

We proberen profielen te configureren in het pom.xml wanneer mogelijk. De reden is dat we de profielen zowel op onze ontwikkelmachines als op de bouwmachines willen gebruiken. De ... gebruiken settings.xml is moeilijker en foutgevoeliger omdat we het zelf over build-omgevingen moeten verdelen.

4. Profielen activeren

Nadat we een of meer profielen hebben gemaakt we kunnen ze gaan gebruiken, of met andere woorden, activeren hen.

4.1. Zien welke profielen actief zijn

Laten we de help: actieve profielen doel om te zien welke profielen actief zijn in onze standaard build:

mvn help: active-profielen

Omdat we nog niets hebben geactiveerd, krijgen we eigenlijk:

De volgende profielen zijn actief:

Nou, niets.

We zullen ze in een oogwenk activeren. Maar snel, een andere manier om te zien wat wordt geactiveerd, is door omvatten de maven-help-plugin in onze pom.xml en bind de active-profielen doel naar de compileren fase:

   org.apache.maven.plugins maven-help-plugin 3.2.0 show-profielen compileren actieve-profielen 

Laten we ze nu gaan gebruiken! We zullen een paar verschillende manieren bekijken.

4.2. Gebruik makend van -P

Eigenlijk hebben we in het begin al een manier gezien, en dat is dat we kunnen activeer profielen met de -P argument.

Dus laten we beginnen met het inschakelen van het integratietest profiel:

mvn-pakket -P integratie-tests

Als we de actieve profielen verifiëren, met de maven-help-plugin of de mvn help: active-profielen -P integratie-tests commando krijgen we het volgende resultaat:

De volgende profielen zijn actief: - integratietesten

Als we meerdere profielen tegelijk willen activeren, gebruiken we een door komma's gescheiden lijst met profielen:

mvn-pakket -P integratietests, mutatietests

4.3. Standaard actief

Als we altijd een profiel willen uitvoeren, kunnen we er standaard een actief maken:

 integratietests waar 

Dan kunnen we rennen mvn-pakket zonder de profielen te specificeren, en we kunnen verifiëren dat de integratietest profiel is actief.

Als we echter de Maven-opdracht uitvoeren en een ander profiel inschakelen dan het activeByDefault profiel wordt overgeslagen. Dus als we rennen mvn-pakket -P mutatietests dan alleen de mutatietesten profiel is actief.

Wanneer we op andere manieren activeren, is de activeByDefault profiel wordt ook overgeslagen, zoals we in de volgende secties zullen zien.

4.4. Gebaseerd op een eigenschap

We kunnen profielen activeren op de opdrachtregel. Soms is het echter handiger als ze automatisch worden geactiveerd. Bijvoorbeeld, we kunnen het baseren op een -D systeemeigenschap:

 active-on-property-environment omgeving 

We activeren nu het profiel met de mvn-pakket -Denvironment opdracht.

Het is ook mogelijk om een ​​profiel te activeren als een woning niet aanwezig is:

 !milieu 

Of we kunnen het profiel activeren als het onroerend goed een specifieke waarde heeft:

 omgevingstest 

We kunnen nu het profiel uitvoeren met mvn-pakket -Denvironment = test.

Ten slotte kunnen we het profiel activeren als de eigenschap een andere waarde heeft dan de opgegeven waarde:

 omgeving! test 

4.5. Gebaseerd op de JDK Versie

Een andere optie is om een ​​profiel in te schakelen op basis van de JDK die op de machine wordt uitgevoerd. In dit geval willen we het profiel inschakelen als de JDK-versie begint met 11:

 actief-op-jdk-11 11 

We kunnen ook bereiken gebruiken voor de JDK-versie, zoals uitgelegd in Maven Version Range Syntax.

4.6. Gebaseerd op het besturingssysteem

Als alternatief kunnen we het profiel activeren op basis van informatie over het besturingssysteem.

En als we dat niet zeker weten, kunnen we eerst de mvn enforcer: display-info opdracht die de volgende uitvoer op mijn computer geeft:

Maven-versie: 3.5.4 JDK-versie: 11.0.2 genormaliseerd als: 11.0.2 OS-info: Arch: amd64 Familie: windows Naam: windows 10 Versie: 10.0

Daarna kunnen we een profiel configureren dat alleen op Windows 10 wordt geactiveerd:

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

4.7. Gebaseerd op een bestand

Een andere optie is om een ​​profiel uit te voeren als een bestand bestaat of is missend.

Laten we dus een testprofiel maken dat alleen wordt uitgevoerd als het testreport.html is nog niet aanwezig:

  target / testreport.html 

5. Een profiel deactiveren

We hebben veel manieren gezien om profielen te activeren, maar soms moeten we er ook een uitschakelen.

Om een ​​profiel uit te schakelen, kunnen we de ‘! ' of ‘-‘.

Dus om het actief-op-jdk-11 profiel voeren we het mvn compileren -P -active-on-jdk-11 opdracht.

6. Conclusie

In dit artikel hebben we gezien hoe u met Maven-profielen kunt werken, zodat we verschillende buildconfiguraties kunnen maken.

De profielen helpen om specifieke elementen van de build uit te voeren wanneer we ze nodig hebben. Dit optimaliseert ons bouwproces en helpt om snellere feedback te geven aan ontwikkelaars.

Kijk gerust eens naar het afgewerkte pom.xml bestand op GitHub.