6.1 Introduzione ai plugin

I cicli di vita standard possono essere migliorati con funzionalità utilizzando i plug-in Maven. I plug-in consentono di inserire nuovi passaggi nel ciclo standard (ad esempio, la distribuzione al server delle applicazioni) o di estendere i passaggi esistenti.

I plugin in Maven non sono qualcosa di straordinario, anzi, sono la cosa più comune e frequente. Dopotutto, se vuoi impostare alcune sfumature della costruzione del tuo progetto, devi specificare le informazioni necessarie in pom.xml. E l'unico modo per farlo è scrivere un "plugin".

Poiché i plugin sono artefatti tanto quanto le dipendenze, sono descritti più o meno allo stesso modo. Invece della sezione delle dipendenze - plugin, invece della dipendenza - plugin, invece dei repository - pluginRepositories, repository - pluginRepository.

Esempio:

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

La dichiarazione di un plug-in in pom.xml consente di correggere la versione del plug-in, nonché di impostare i parametri necessari per esso, definire vari parametri di configurazione e collegarsi alle fasi.

In altre parole, Maven esegue alcuni plugin che fanno tutto il lavoro. Cioè, se vogliamo istruire Maven su build speciali del progetto, allora dobbiamo aggiungere a pom.xml un'indicazione per lanciare il plugin desiderato nella fase richiesta e con i parametri richiesti .

Il numero di plug-in disponibili è molto ampio, ci sono vari plug-in che consentono di eseguire un'applicazione Web direttamente da Maven per testarla in un browser, generare risorse e simili. Il compito principale dello sviluppatore in questa situazione è trovare e applicare il set di plugin più appropriato .

6.2 Ciclo di vita e plugin

Molto spesso, un plug-in viene utilizzato per avviare una sorta di utility della console durante l'esecuzione di una determinata fase. Inoltre, possiamo persino eseguire una normale classe Java (che ha un metodo principale, ovviamente).

Esempio:

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

Di solito i plugin possono essere configurati in modo molto flessibile. Tutti i plug-in ufficiali degli sviluppatori Maven sono molto ben documentati sul sito Web ufficiale di Maven. Ad esempio, per il maven-compiler-plugin nella pagina del progetto Apache Maven, è possibile visualizzare un elenco di tutte le variabili che controllano il plug-in. Informazioni sul plugin sono disponibili al link

Informazioni più importanti. Diversi plugin vengono chiamati da Maven in diverse fasi del loro ciclo di vita. Ad esempio, un progetto che descrive un'applicazione desktop Java swing ha fasi del ciclo di vita diverse da quelle tipiche per lo sviluppo di un'applicazione web (war).

Oppure, ad esempio, quando viene eseguito il comando "mvn test", viene avviata un'intera serie di passaggi nel ciclo di vita del progetto: "process-resources", "compile", "process-classes", "process-test -resources”, “test-compile” , test. Puoi vedere la menzione di queste fasi nei messaggi visualizzati da 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 Gol in Maven - gol

In Maven esiste anche un obiettivo (obiettivo). l'obiettivo è un po 'come l'obiettivo di avvio di Maven. Gli obiettivi principali coincidono con le fasi principali:

  • convalidare;
  • compilare;
  • test;
  • pacchetto;
  • verificare;
  • installare;
  • distribuire.

In ogni fase del ciclo di vita del progetto viene chiamato uno specifico plugin (jar-library) che include una serie di obiettivi (goal)

Ad esempio, il plug-in "maven-compiler-plugin" contiene due destinazioni: compiler:compile per la compilazione del codice sorgente principale del progetto e compiler:testCompile per la compilazione dei test. Formalmente, l'elenco delle fasi può essere modificato, sebbene ciò sia raramente necessario.

Se devi eseguire alcune azioni non standard in una determinata fase, devi solo aggiungere il plug-in appropriato a 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>

La cosa più importante in questo caso è definire per il plugin il nome della fase “execution/phase”, in cui è necessario incorporare la chiamata al goal del plugin “goal”. Ad esempio, è necessario generare codice Java basato su xml. Poi c'è bisogno della fase “generate-sources”, che viene posta prima della chiamata alla fase di compilazione ed è l'ideale per generare parte dei sorgenti del progetto.