6.1 Inleiding tot plug-ins

Standaardlevenscycli kunnen worden uitgebreid met functionaliteit met behulp van Maven-plug-ins. Met plug-ins kunt u nieuwe stappen in de standaardcyclus invoegen (bijvoorbeeld distributie naar de applicatieserver) of bestaande stappen uitbreiden.

Plug-ins in Maven zijn niet iets buitengewoons, integendeel, ze zijn het meest voorkomende en meest voorkomende. Als u immers enkele nuances wilt aanbrengen bij het bouwen van uw project, moet u de nodige informatie specificeren in pom.xml. En de enige manier om dit te doen is door een "plug-in" te schrijven.

Omdat plug-ins net zo goed artefacten als afhankelijkheden zijn, worden ze op vrijwel dezelfde manier beschreven. In plaats van de sectie afhankelijkheden - plug-ins, in plaats van afhankelijkheid - plug-in, in plaats van repositories - pluginRepositories, repository - pluginRepository.

Voorbeeld:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
    </plugin>
</plugins>

Door een plug-in in pom.xml te declareren, kunt u de versie van de plug-in repareren, de benodigde parameters ervoor instellen, verschillende configuratieparameters definiëren en aan fasen binden.

Met andere woorden, Maven voert bepaalde plug-ins uit die al het werk doen. Dat wil zeggen, als we Maven willen leren over speciale builds van het project, dan moeten we aan pom.xml een indicatie toevoegen om de gewenste plug-in in de vereiste fase en met de vereiste parameters te starten .

Het aantal beschikbare plug-ins is erg groot, er zijn verschillende plug-ins waarmee u een webtoepassing rechtstreeks vanuit maven kunt uitvoeren om deze in een browser te testen, bronnen te genereren en dergelijke. De belangrijkste taak van de ontwikkelaar in deze situatie is het vinden en toepassen van de meest geschikte set plug-ins .

6.2 Levenscyclus en plug-ins

Heel vaak wordt een plug-in gebruikt om een ​​soort consolehulpprogramma te starten tijdens de uitvoering van een bepaalde fase. Bovendien kunnen we zelfs een gewone Java-klasse uitvoeren (die natuurlijk een hoofdmethode heeft).

Voorbeeld:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.2.1</version>
  <executions>
    <execution>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>com.example.Main</mainClass>
    <arguments>
      <argument>first-argument</argument>
      <argument>second-argument</argument>
    </arguments>
  </configuration>
</plugin>

Gewoonlijk kunnen plug-ins zeer flexibel worden geconfigureerd. Alle officiële plug-ins van Maven-ontwikkelaars zijn zeer goed gedocumenteerd op de officiële Maven-website. Voor de maven-compiler-plug-in op de Apache Maven Project-pagina kunt u bijvoorbeeld een lijst zien met alle variabelen die de plug-in besturen. Informatie over de plug-in is beschikbaar via de link

Meer belangrijke informatie. Verschillende plug-ins worden door Maven aangeroepen in verschillende stadia van hun levenscyclus. Een project dat een swingende Java-desktoptoepassing beschrijft, heeft bijvoorbeeld andere levenscyclusfasen dan die welke typisch zijn voor de ontwikkeling van een webtoepassing (oorlog).

Of als bijvoorbeeld het commando “mvn test” wordt uitgevoerd, wordt een hele reeks stappen in de levenscyclus van het project in gang gezet: “proces-resources”, “compile”, “proces-classes”, “proces-test -resources", "test-compileren", test. U kunt de vermelding van deze fasen zien in de berichten die door Maven worden weergegeven:

[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)     @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile)      @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources         (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile)          @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test)         @ codegym ---
[INFO] Surefire report directory:           t:\ projects\codegym\target\surefire-reports

6.3 Doelpunten in Maven - doelen

In Maven bestaat ook zoiets als een doel (goal). doel lijkt een beetje op het opstartdoel van Maven. De hoofddoelen vallen samen met de hoofdfasen:

  • valideren;
  • compileren;
  • test;
  • pakket;
  • verifiëren;
  • installeren;
  • aanwenden.

In elke fase van de projectlevenscyclus wordt een specifieke plug-in (jar-library) aangeroepen, die een aantal doelen omvat (goal)

De plug-in "maven-compiler-plugin" bevat bijvoorbeeld twee doelen: compiler:compile voor het compileren van de hoofdbroncode van het project en compiler:testCompile voor het compileren van tests. Formeel kan de lijst met fasen worden gewijzigd, hoewel dit zelden nodig is.

Als u in een bepaalde fase een aantal niet-standaard acties moet uitvoeren, hoeft u alleen maar de juiste plug-in toe te voegen aan pom.xml

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>Name-plugin</artifactId>
  <executions>
    <execution>
      <id>customTask</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>pluginGoal</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Het belangrijkste in dit geval is om voor de plug-in de naam van de fase "uitvoering/fase" te definiëren, waarin u de oproep naar het doel van de plug-in "goal" moet insluiten. U moet bijvoorbeeld Java-code genereren op basis van xml. Dan heb je de fase “genereren-bronnen” nodig, die vóór de aanroep naar de compileerfase wordt geplaatst en ideaal is voor het genereren van een deel van de bronnen van het project.