全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-23 5 分钟 ✍️ juanwangdev

生命周期阶段绑定

插件目标绑定到生命周期阶段,阶段执行时自动调用插件。

绑定概念

Phase 与 Goal

XML
生命周期阶段 (Phase)
    ↓ 绑定
插件目标 (Goal)

示例:
compile 阶段 → maven-compiler-plugin:compile

绑定类型

类型说明
内置绑定Maven 默认绑定
自定义绑定用户手动绑定

内置绑定

Default 生命周期默认绑定

阶段插件目标
process-resourcesresources:resources
compilecompiler:compile
process-test-resourcesresources:testResources
test-compilecompiler:testCompile
testsurefire:test
packagejar:jar 或 war:war
installinstall:install
deploydeploy:deploy

Clean 生命周期默认绑定

阶段插件目标
cleanclean: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 查看阶段绑定信息

📝 发现内容有误?点击此处直接编辑

← 上一篇 插件配置基础
下一篇 → 中央仓库与镜像配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库