6.1 Einführung in Plugins

Standardlebenszyklen können mithilfe von Maven-Plugins um Funktionen erweitert werden. Mit Plugins können Sie neue Schritte in den Standardzyklus einfügen (z. B. Verteilung auf den Anwendungsserver) oder bestehende Schritte erweitern.

Plugins in Maven sind nichts Außergewöhnliches, im Gegenteil, sie sind die am weitesten verbreitete und am häufigsten anzutreffende Sache. Wenn Sie schließlich einige Nuancen für die Erstellung Ihres Projekts festlegen möchten, müssen Sie die erforderlichen Informationen in pom.xml angeben. Und der einzige Weg, dies zu tun, besteht darin, ein „Plugin“ zu schreiben.

Da Plugins ebenso Artefakte wie Abhängigkeiten sind, werden sie auf die gleiche Weise beschrieben. Anstelle des Abschnitts „Abhängigkeiten“ - Plugins, anstelle von Abhängigkeiten - Plugins, anstelle von Repositories - PluginRepositories, Repository - PluginRepository.

Beispiel:

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

Durch die Deklaration eines Plugins in pom.xml können Sie die Plugin-Version festlegen, die erforderlichen Parameter dafür festlegen, verschiedene Konfigurationsparameter definieren und an Phasen binden.

Mit anderen Worten: Maven führt bestimmte Plugins aus, die die ganze Arbeit erledigen. Das heißt, wenn wir Maven über spezielle Builds des Projekts unterrichten möchten, müssen wir pom.xml einen Hinweis hinzufügen, um das gewünschte Plugin in der erforderlichen Phase und mit den erforderlichen Parametern zu starten .

Die Anzahl der verfügbaren Plugins ist sehr groß. Es gibt verschiedene Plugins, mit denen Sie eine Webanwendung direkt von Maven aus ausführen können, um sie in einem Browser zu testen, Ressourcen zu generieren und dergleichen. Die Hauptaufgabe des Entwicklers besteht in dieser Situation darin, den am besten geeigneten Satz von Plugins zu finden und anzuwenden .

6.2 Lebenszyklus und Plugins

Sehr oft wird ein Plugin verwendet, um in einer bestimmten Phase eine Art Konsolendienstprogramm auszuführen. Darüber hinaus können wir sogar eine reguläre Java-Klasse ausführen (die natürlich eine Hauptmethode hat).

Beispiel:

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

Normalerweise lassen sich Plugins sehr flexibel konfigurieren. Alle offiziellen Plugins von Maven-Entwicklern sind auf der offiziellen Maven-Website sehr gut dokumentiert. Beispielsweise können Sie für das Maven-Compiler-Plugin auf der Apache Maven-Projektseite eine Liste aller Variablen sehen, die das Plugin steuern. Informationen zum Plugin finden Sie unter dem Link

Weitere wichtige Informationen. Verschiedene Plugins werden von Maven in unterschiedlichen Phasen ihres Lebenszyklus aufgerufen. Beispielsweise weist ein Projekt, das eine Swing-Java-Desktopanwendung beschreibt, andere Lebenszyklusphasen auf als die, die für die Entwicklung einer Webanwendung (War) typisch sind.

Oder wenn beispielsweise der Befehl „mvn test“ ausgeführt wird, wird eine ganze Reihe von Schritten im Projektlebenszyklus initiiert: „process-resources“, „compile“, „process-classes“, „process-test-resources“. ”, „test-compile“, test. Sie können die Erwähnung dieser Phasen in den von Maven angezeigten Nachrichten sehen:

[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 Ziele in Maven – Ziele

In Maven gibt es auch so etwas wie ein Ziel (Goal). Das Ziel ähnelt in etwa dem Startziel von Maven. Die Hauptziele fallen mit den Hauptphasen zusammen:

  • bestätigen;
  • kompilieren;
  • prüfen;
  • Paket;
  • verifizieren;
  • Installieren;
  • einsetzen.

In jeder Phase des Projektlebenszyklus wird ein bestimmtes Plugin (JAR-Bibliothek) aufgerufen, das eine Reihe von Zielen (Ziel) enthält.

Beispielsweise enthält das Plugin „maven-compiler-plugin“ zwei Ziele: Compiler:compile zum Kompilieren des Hauptquellcodes des Projekts und Compiler:testCompile zum Kompilieren von Tests. Formal kann die Liste der Phasen geändert werden, obwohl dies selten notwendig ist.

Wenn Sie in einer bestimmten Phase einige nicht standardmäßige Aktionen ausführen müssen, müssen Sie nur das entsprechende Plugin zu pom.xml hinzufügen

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

Das Wichtigste in diesem Fall ist, für das Plugin den Namen der Phase „Ausführung/Phase“ zu definieren, in der Sie den Aufruf zum Ziel des Plugins „Ziel“ einbetten müssen. Beispielsweise müssen Sie Java-Code basierend auf XML generieren. Dann benötigen Sie die „Generate-Sources“-Phase, die vor dem Aufruf der Kompilierungsphase platziert ist und sich ideal zum Generieren eines Teils der Projektquellen eignet.