6.1 Въведение в плъгините

Стандартните жизнени цикли могат да бъдат подобрени с функционалност чрез плъгини на Maven. Добавките ви позволяват да вмъкнете нови стъпки в стандартния цикъл (например разпространение до сървъра на applications) or да разширите съществуващите стъпки.

Добавките в Maven не са нещо изключително, напротив, те са най-разпространеното и често срещано нещо. В крайна сметка, ако искате да зададете някои нюанси на изграждането на вашия проект, тогава трябва да посочите необходимата информация в pom.xml. И единственият начин да направите това е да напишете „плъгин“.

Тъй като плъгините са също толкова артефакти, колкото и зависимостите, те са описани почти по същия начин. Вместо секцията за зависимости - плъгини, instead of зависимост - плъгин, instead of хранorща - pluginRepositories, хранorще - pluginRepository.

Пример:

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

Декларирането на плъгин в pom.xml ви позволява да коригирате versionта на плъгина, Howто и да зададете необходимите параметри за него, да дефинирате различни конфигурационни параметри и да се свържете с фази.

С други думи, Maven изпълнява определени добавки, които вършат цялата работа. Тоест, ако искаме да научим Maven за специални компилации на проекта, тогава трябва да добавим към pom.xml индикация за стартиране на желания плъгин в необходимата фаза и с необходимите параметри .

Броят на наличните добавки е много голям, има различни добавки, които ви позволяват да стартирате уеб приложение директно от maven, за да го тествате в браузър, да генерирате ресурси и други подобни. Основната задача на разработчика в тази ситуация е да намери и приложи най-подходящия набор от добавки .

6.2 Жизнен цикъл и добавки

Много често плъгинът се използва за стартиране на няHowъв вид конзолна помощна програма по време на изпълнение на определена фаза. Нещо повече, можем дори да стартираме обикновен Java клас (който има основен метод, разбира се).

Пример:

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

Обикновено добавките могат да бъдат много гъвкаво конфигурирани. Всички официални добавки от разработчиците на Maven са много добре documentирани на официалния уебсайт на Maven. Например, за maven-compiler-plugin на pageта на Apache Maven Project можете да видите списък с всички променливи, които контролират добавката. Информация за плъгина е достъпна на връзката

По-важна информация. Различни добавки се извикват от Maven на различни етапи от техния жизнен цикъл. Например, проект, описващ десктоп приложение на Swing Java, има различни етапи от жизнения цикъл от тези, които са типични за разработката на уеб приложение (война).

Или, например, когато се изпълни командата „mvn test“, се инициира цял набор от стъпки в жизнения цикъл на проекта: „процесни ресурси“, „компorране“, „процесни класове“, „процесен тест -ресурси”, “test-compile” , test. Можете да видите споменаването на тези фази в съобщенията, показани от 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 Цели в Maven - цели

В Maven има и такова нещо като цел (гол). целта е нещо като целта за стартиране на Maven. Основните цели съвпадат с основните фази:

  • валидирам;
  • компorрам;
  • тест;
  • пакет;
  • проверявам;
  • Инсталирай;
  • разгърнете.

Във всяка фаза от жизнения цикъл на проекта се извиква специфичен плъгин (jar-library), който включва редица цели (goal)

Например плъгинът „maven-compiler-plugin“ съдържа две цели: compiler:compile за компorране на основния изходен code на проекта и compiler:testCompile за компorране на тестове. Формално списъкът с фази може да бъде променен, въпреки че това рядко е необходимо.

Ако трябва да извършите някои нестандартни действия в определена фаза, тогава просто трябва да добавите подходящия плъгин към 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>

Най-важното в случая е да дефинирате за плъгина името на фазата „изпълнение/фаза“, в която трябва да вградите извикването към целта на плъгина „цел“. Например, трябва да генерирате Java code въз основа на xml. След това се нуждаете от фазата „generate-sources“, която се поставя преди извикването на фазата на компorране и е идеална за генериране на част от източниците на проекта.