Ответ
Плагины (plugins) в Apache Maven — это исполняемые компоненты, которые выполняют конкретные задачи (goals) в процессе сборки проекта. Maven сам по себе является фреймворком, а вся функциональность (компиляция, тестирование, упаковка) реализована через плагины.
Как это работает:
- Плагин — это артефакт (JAR), содержащий один или несколько целей (goals).
- Цель (goal) — это атомарная задача (например,
compile,test). - Фаза (phase) — это этап жизненного цикла сборки (например,
compile,package). - На каждой фазе выполняются цели, привязанные к ней из различных плагинов.
Пример конфигурации плагина в pom.xml:
<build>
<plugins>
<!-- maven-compiler-plugin привязан к фазе compile -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<!-- Настройки цели 'compile' -->
<source>17</source>
<target>17</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
<!-- Плагин для создания исполняемого JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Типы плагинов:
- Встроенные (Core):
maven-clean-plugin,maven-compiler-plugin,maven-surefire-plugin(тесты),maven-jar-plugin. - Сторонние:
maven-shade-plugin,spring-boot-maven-plugin,versions-maven-plugin.
Выполнение:
- Автоматически при запуске фазы:
mvn compile(вызовет цельcompiler:compile). - Явный вызов цели:
mvn compiler:compileилиmvn surefire:test.