生命周期阶段绑定
插件目标绑定到生命周期阶段,阶段执行时自动调用插件。
绑定概念
Phase 与 Goal
XML
生命周期阶段 (Phase)
↓ 绑定
插件目标 (Goal)
示例:
compile 阶段 → maven-compiler-plugin:compile
绑定类型
| 类型 | 说明 |
|---|---|
| 内置绑定 | Maven 默认绑定 |
| 自定义绑定 | 用户手动绑定 |
内置绑定
Default 生命周期默认绑定
| 阶段 | 插件目标 |
|---|---|
| process-resources | resources:resources |
| compile | compiler:compile |
| process-test-resources | resources:testResources |
| test-compile | compiler:testCompile |
| test | surefire:test |
| package | jar:jar 或 war:war |
| install | install:install |
| deploy | deploy:deploy |
Clean 生命周期默认绑定
| 阶段 | 插件目标 |
|---|---|
| clean | clean:clean |
自定义绑定
绑定插件目标到阶段
XML
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-source</id>
<phase>package</phase> <!-- 绑定到 package 阶段 -->
<goals>
<goal>jar-no-fork</goal> <!-- 执行的目标 -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
execution 元素说明
| 元素 | 说明 |
|---|---|
| id | 执行标识,唯一 |
| phase | 绑定的生命周期阶段 |
| goals | 插件目标列表 |
多目标绑定
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>clean-target</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete dir="target"/>
</tasks>
</configuration>
</execution>
<execution>
<id>show-info</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message="Compile completed"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
常见自定义绑定场景
打包源码
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
打包 Javadoc
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
执行 SQL 脝始化
Bash
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/init</url>
<srcFiles>
<srcFile>sql/init.sql</srcFile>
</srcFiles>
</configuration>
</execution>
</executions>
</plugin>
查看阶段绑定
text
mvn help:describe -Dcmd=package
输出示例:
text
package' is a phase corresponding to this plugin:
maven-jar-plugin:jar
绑定顺序
同一阶段多个插件按声明顺序执行:
text
package 阶段:
1. maven-jar-plugin:jar(内置)
2. maven-source-plugin:jar(自定义)
要点总结
- 插件目标绑定到生命周期阶段,阶段触发执行目标
- 内置绑定:Maven 默认绑定核心插件
- 自定义绑定:executions 配置 phase 和 goals
- 同阶段多个插件按声明顺序执行
- 使用 help:describe 查看阶段绑定信息
📝 发现内容有误?点击此处直接编辑