Maven-doelen en fasen

1. Overzicht

In deze tutorial zullen we verschillende Maven-build-levenscycli en hun fasen verkennen.

We bespreken ook de kernrelatie tussen doelen en fasen.

2. Maven Build Lifecycle

De Maven-build volgt een specifieke levenscyclus om het doelproject te implementeren en te distribueren.

Er zijn drie ingebouwde levenscycli:

  • standaard: de belangrijkste levenscyclus aangezien deze verantwoordelijk is voor projectimplementatie
  • clean: om het project op te schonen en alle bestanden te verwijderen die door de vorige build zijn gegenereerd
  • site: om de site-documentatie van het project te creëren

Elke levenscyclus bestaat uit een opeenvolging van fasen. De standaard De build-levenscyclus bestaat uit 23 fasen, aangezien het de belangrijkste build-levenscyclus is.

Aan de andere kant, schoon levenscyclus bestaat uit 3 fasen, terwijl de site levenscyclus bestaat uit 4 fasen.

3. Maven-fase

Een Maven-fase vertegenwoordigt een fase in de Maven-build levenscyclus. Elke fase is verantwoordelijk voor een specifieke taak.

Hier zijn enkele van de belangrijkste fasen in het standaard levenscyclus bouwen:

  • valideren: controleer of alle informatie die nodig is voor de build beschikbaar is
  • compileren: compileer de broncode
  • test-compileren: compileer de testbroncode
  • test: voer eenheidstests uit
  • pakket: pakket gecompileerde broncode in het distribueerbare formaat (jar, war, ...)
  • integratietest: verwerk en implementeer het pakket indien nodig om integratietests uit te voeren
  • installeren: installeer het pakket op een lokale repository
  • inzetten: kopieer het pakket naar de externe opslagplaats

Bekijk de Maven Reference voor de volledige lijst van de fasen van elke levenscyclus.

Fasen worden in een specifieke volgorde uitgevoerd. Dit betekent dat als we een specifieke fase uitvoeren met behulp van de opdracht:

mvn 

Hiermee wordt niet alleen de gespecificeerde fase uitgevoerd, maar ook alle voorgaande fasen.

Als we bijvoorbeeld het inzetten fase - dat is de laatste fase in de standaard build lifecycle - die alle fasen vóór de inzetten fase ook, dat is het geheel standaard levenscyclus:

mvn implementeren

4. Maven-doel

Elke fase is een reeks doelen en elk doel is verantwoordelijk voor een specifieke taak.

Als we een fase uitvoeren, worden alle doelen die aan deze fase zijn gebonden in volgorde uitgevoerd.

Hier zijn enkele van de fasen en standaarddoelen die eraan zijn gebonden:

  • compiler: compileren - de compileren doelpunt van de compiler plug-in is gebonden aan de compileren fase
  • compiler: testCompile is gebonden aan de test-compileren fase
  • trefzeker: test is gebonden aan test fase
  • installeren: installeren is gebonden aan installeren fase
  • pot: pot en oorlog: oorlog is gebonden aan pakket fase

We kunnen alle doelen die aan een specifieke fase zijn gebonden en hun plug-ins weergeven met behulp van het commando:

mvn help: beschrijven -Dcmd = FASENNAAM

Als u bijvoorbeeld alle doelen wilt weergeven die zijn gekoppeld aan het compileren fase kunnen we draaien:

mvn help: beschrijven -Dcmd = compileren

En ontvang de voorbeelduitvoer:

compileren 'is een fase die overeenkomt met deze plug-in: org.apache.maven.plugins: maven-compiler-plugin: 3.1: compileren

Wat, zoals hierboven vermeld, de compileren doelpunt van compiler plug-in is gebonden aan de compileren fase.

5. Maven-plug-in

Een Maven-plug-in is een groep doelen. Deze doelen zijn echter niet noodzakelijkerwijs allemaal gebonden aan dezelfde fase.

Hier is bijvoorbeeld een eenvoudige configuratie van de Maven Failsafe-plug-in die verantwoordelijk is voor het uitvoeren van integratietests:

   maven-failsafe-plugin $ {maven.failsafe.version} integratietest verifiëren 

Zoals we kunnen zien, heeft de Failsafe-plug-in twee hoofddoelen die hier zijn geconfigureerd:

  • integratietest: integratietests uitvoeren
  • verifiëren: controleer of alle integratietests zijn geslaagd

We kunnen het volgende commando gebruiken om maak een lijst van alle doelen in een specifieke plug-in:

mvn: help

Om bijvoorbeeld alle doelen in de Failsafe-plug-in weer te geven:

mvn failsafe: help

En de output hiervan zal zijn:

Deze plug-in heeft 3 doelen: failsafe: help Help-informatie weergeven over maven-failsafe-plugin. Roep mvn failsafe: help -Ddetail = true -Dgoal = aan om parameterdetails weer te geven. failsafe: integratietest Voer integratietests uit met Surefire. failsafe: controleer of integratietests zijn uitgevoerd met Surefire.

Om een ​​specifiek doel uit te voeren, zonder de volledige fase (en de voorgaande fasen) uit te voeren we kunnen het commando gebruiken:

mvn:

Bijvoorbeeld om te rennen integratietest doel van de Failsafe-plug-in, moeten we uitvoeren:

mvn failsafe: integratietest

6. Bouwen van een Maven-project

Om een ​​Maven-project te bouwen, moeten we een van de levenscycli uitvoeren door een van hun fasen uit te voeren:

mvn implementeren

Dit zal het geheel uitvoeren standaard levenscyclus. Als alternatief kunnen we stoppen bij de installeren fase:

mvn installeren

Maar meestal gebruiken we het commando:

mvn schone installatie

Om het project eerst op te schonen - door het schoon levenscyclus - vóór de nieuwbouw.

We kunnen ook alleen een specifiek doel van de plug-in uitvoeren:

mvn-compiler: compileren

Merk op dat als we probeerden een Maven-project te bouwen zonder een fase of een doel op te geven, dit de fout zal veroorzaken:

[ERROR] Er zijn geen doelen opgegeven voor deze build. U moet een geldige levenscyclusfase of een doel specificeren

7. Conclusie

In dit artikel hebben we de bouwlevenscycli van Maven besproken, evenals de relatie tussen Maven-fasen en -doelen.