6.1 Introducere în pluginuri

Ciclurile de viață standard pot fi îmbunătățite cu funcționalități folosind plugin-uri Maven. Pluginurile vă permit să inserați pași noi în ciclul standard (de exemplu, distribuția către serverul de aplicații) sau să extindeți pașii existenți.

Pluginurile din Maven nu sunt ceva extraordinar, dimpotrivă, sunt cel mai frecvent și mai des întâlnit lucru. La urma urmei, dacă doriți să setați câteva nuanțe pentru construirea proiectului dvs., atunci trebuie să specificați informațiile necesare în pom.xml. Și singura modalitate de a face acest lucru este să scrieți un „plugin”.

Deoarece pluginurile sunt la fel de mult artefacte ca și dependențe, ele sunt descrise aproape în același mod. În loc de secțiunea dependențe - pluginuri, în loc de dependență - plugin, în loc de depozite - pluginRepositories, repository - pluginRepository.

Exemplu:

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

Declararea unui plugin în pom.xml vă permite să remediați versiunea pluginului, precum și să setați parametrii necesari pentru acesta, să definiți diferiți parametri de configurare și să vă legați la faze.

Cu alte cuvinte, Maven rulează anumite plugin-uri care fac toată munca. Adică, dacă vrem să-l învățăm pe Maven despre versiunile speciale ale proiectului, atunci trebuie să adăugăm la pom.xml o indicație pentru a lansa pluginul dorit în faza necesară și cu parametrii necesari .

Numărul de pluginuri disponibile este foarte mare, există diverse plugin-uri care vă permit să rulați o aplicație web direct din maven pentru a o testa într-un browser, a genera resurse și altele asemenea. Sarcina principală a dezvoltatorului în această situație este să găsească și să aplice cel mai potrivit set de pluginuri .

6.2 Ciclul de viață și pluginuri

Foarte des, un plugin este folosit pentru a lansa un fel de utilitar de consolă în timpul execuției unei anumite faze. Mai mult, putem rula chiar și o clasă Java obișnuită (care are o metodă principală, desigur).

Exemplu:

<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>

De obicei, pluginurile pot fi configurate foarte flexibil. Toate pluginurile oficiale de la dezvoltatorii Maven sunt foarte bine documentate pe site-ul oficial Maven. De exemplu, pentru maven-compiler-plugin de pe pagina Apache Maven Project, puteți vedea o listă cu toate variabilele care controlează pluginul. Informațiile despre plugin sunt disponibile la link

Informații mai importante. Diferite pluginuri sunt apelate de către Maven în diferite etape ale ciclului lor de viață. De exemplu, un proiect care descrie o aplicație desktop Java swing are diferite etape ale ciclului de viață față de cele tipice pentru dezvoltarea unei aplicații web (război).

Sau, de exemplu, atunci când se execută comanda „mvn test”, se inițiază un întreg set de pași din ciclul de viață al proiectului: „proces-resurse”, „compilare”, „proces-clases”, „proces-test”. -resurse”, „test-compilare”, test. Poți vedea mențiunea acestor faze în mesajele afișate de Maven:

[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 Goluri în Maven - goluri

În Maven, există, de asemenea, un astfel de lucru ca un gol (gol). obiectivul este un fel ca ținta startup-ului Maven. Obiectivele principale coincid cu principalele faze:

  • valida;
  • compila;
  • Test;
  • pachet;
  • verifica;
  • instalare;
  • disloca.

În fiecare fază a ciclului de viață al proiectului, se numește un plugin specific (bibliotecă-jar), care include o serie de obiective (scop)

De exemplu, pluginul „maven-compiler-plugin” conține două ținte: compilator:compile pentru compilarea codului sursă principal al proiectului și compiler:testCompile pentru compilarea testelor. Formal, lista fazelor poate fi modificată, deși acest lucru este rareori necesar.

Dacă trebuie să efectuați unele acțiuni non-standard într-o anumită fază, atunci trebuie doar să adăugați pluginul corespunzător la 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>

Cel mai important lucru în acest caz este să definiți pentru plugin numele fazei de „execuție/fază”, în care trebuie să încorporați apelul în scopul pluginului „obiectiv”. De exemplu, trebuie să generați cod Java bazat pe xml. Apoi ai nevoie de faza „generare-surse”, care este plasată înaintea apelului la faza de compilare și este ideală pentru generarea unei părți din sursele proiectului.