6.1 Introduktion til plugins

Standardlivscyklusser kan forbedres med funktionalitet ved hjælp af Maven-plugins. Plugins giver dig mulighed for at indsætte nye trin i standardcyklussen (for eksempel distribution til applikationsserveren) eller udvide eksisterende trin.

Plugins i Maven er ikke noget ekstraordinært, tværtimod er de den mest almindelige og hyppigst stødte ting. Når alt kommer til alt, hvis du vil indstille nogle nuancer af at bygge dit projekt, skal du angive de nødvendige oplysninger i pom.xml. Og den eneste måde at gøre dette på er at skrive et "plugin".

Da plugins er lige så mange artefakter som afhængigheder, beskrives de på nogenlunde samme måde. I stedet for afhængighedssektionen - plugins, i stedet for afhængighed - plugin, i stedet for repositories - pluginRepositories, repository - pluginRepository.

Eksempel:

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

Erklæring af et plugin i pom.xml giver dig mulighed for at rette plugin-versionen, samt indstille de nødvendige parametre for det, definere forskellige konfigurationsparametre og binde til faser.

Med andre ord kører Maven visse plugins, der gør alt arbejdet. Det vil sige, at hvis vi ønsker at lære Maven om specielle opbygninger af projektet, så skal vi tilføje til pom.xml en indikation for at starte det ønskede plugin i den nødvendige fase og med de nødvendige parametre .

Antallet af tilgængelige plugins er meget stort, der er forskellige plugins, der giver dig mulighed for at køre en webapplikation direkte fra maven for at teste den i en browser, generere ressourcer og lignende. Udviklerens hovedopgave i denne situation er at finde og anvende det mest passende sæt plugins .

6.2 Livscyklus og plugins

Meget ofte bruges et plugin til at starte en form for konsolværktøj under udførelsen af ​​en bestemt fase. Desuden kan vi endda køre en almindelig Java-klasse (som selvfølgelig har en hovedmetode).

Eksempel:

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

Normalt kan plugins konfigureres meget fleksibelt. Alle officielle plugins fra Maven-udviklere er meget veldokumenterede på det officielle Maven-websted. For eksempel, for maven-compiler-pluginet på Apache Maven Project-siden, kan du se en liste over alle de variabler, der styrer pluginnet. Oplysninger om plugin er tilgængelig på linket

Flere vigtige oplysninger. Forskellige plugins kaldes af Maven på forskellige stadier af deres livscyklus. For eksempel har et projekt, der beskriver en swing Java desktop-applikation, forskellige livscyklusstadier end dem, der er typiske for udviklingen af ​​en webapplikation (krig).

Eller, for eksempel, når kommandoen "mvn test" udføres, startes et helt sæt trin i projektets livscyklus: "proces-ressourcer", "kompilere", "proces-klasser", "proces-test -ressourcer", "test-kompilere" , test. Du kan se omtalen af ​​disse faser i meddelelserne, der vises af 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 Mål i Maven - mål

I Maven er der også sådan noget som et mål (mål). Målet er ligesom Maven-startmålet. Hovedmålene falder sammen med hovedfaserne:

  • validere;
  • udarbejde;
  • prøve;
  • pakke;
  • verificere;
  • installere;
  • indsætte.

I hver fase af projektets livscyklus kaldes et specifikt plugin (jar-library), som inkluderer en række mål (mål)

For eksempel indeholder "maven-compiler-plugin" plugin to mål: compiler:compile til kompilering af projektets hovedkildekode og compiler:testCompile til kompilering af tests. Formelt kan listen over faser ændres, selvom det sjældent er nødvendigt.

Hvis du skal udføre nogle ikke-standard handlinger i en bestemt fase, så skal du blot tilføje det passende plugin til 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>

Det vigtigste i dette tilfælde er at definere navnet på "udførelse/fase"-fasen for plugin'et, hvor du skal indlejre opkaldet til målet for pluginnet "mål". For eksempel skal du generere Java-kode baseret på xml. Så skal du bruge fasen "generere-kilder", som placeres før opkaldet til kompileringsfasen og er ideel til at generere en del af projektets kilder.