Maven 插件
Maven 插件(Plugins)完全解析(2025 最新版)
一句话总结:
Maven 插件 = 构建的“工具箱”,每个生命周期阶段都由插件执行,自定义构建全靠插件!
一、Maven 插件是什么?
- 插件 = 一组
goal(目标) - 每个
goal执行一个具体任务(如:编译、打包、测试) - Maven 核心极简,功能全靠插件扩展
Maven 核心(只做协调) → 调用插件 → 执行 goal
二、插件 vs 生命周期绑定(核心机制)
| 生命周期阶段 | 默认绑定插件 | 执行的 goal |
|---|---|---|
compile | maven-compiler-plugin | compile |
test | maven-surefire-plugin | test |
package | maven-jar-plugin / maven-war-plugin | jar / war |
install | maven-install-plugin | : |
deploy | maven-deploy-plugin | deploy |
运行
mvn package→ 自动调用maven-jar-plugin:jar
三、插件坐标(GAV)与调用方式
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
调用方式:
# 1. 完整命令(推荐调试)
mvn org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile
# 2. 简写(前缀匹配)
mvn compiler:compile
四、核心插件详解(10 大必备)
| 插件 | 作用 | 关键 goal | 配置示例 |
|---|---|---|---|
maven-compiler-plugin | 设置 Java 版本 | compile, testCompile | 设置 JDK 17 |
maven-surefire-plugin | 运行单元测试 | test | 跳过/包含测试 |
maven-jar-plugin | 定制 JAR 包 | jar | 添加 MANIFEST.MF |
maven-war-plugin | 打包 WAR | war | Web 项目 |
maven-shade-plugin | 打包“胖 JAR” | shade | 可执行 JAR |
maven-assembly-plugin | 自定义打包 | single | 带依赖 ZIP |
maven-source-plugin | 打包源码 | jar | sources.jar |
maven-javadoc-plugin | 生成 API 文档 | jar | javadoc.jar |
spring-boot-maven-plugin | Spring Boot 打包 | repackage | 可执行 JAR |
exec-maven-plugin | 运行主类 | java | 快速启动 |
五、插件配置实战(pom.xml)
1. maven-compiler-plugin(设置 JDK)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
<!-- 启用预览特性 -->
<compilerArgs>
<arg>--enable-preview</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
替代方式:
<properties><maven.compiler.source>17</maven.compiler.source></properties>
2. maven-surefire-plugin(测试控制)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<skipTests>false</skipTests>
<includes>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/*IT.java</exclude>
</excludes>
</configuration>
</plugin>
命令跳过测试:
mvn package -DskipTests
mvn package -Dmaven.test.skip=true
3. maven-shade-plugin(打“胖 JAR”)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>shade</goal></goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.App</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
运行:
java -jar target/app-shaded.jar
4. spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.3.5</version>
<configuration>
<mainClass>com.example.DemoApplication</mainClass>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
六、插件执行绑定(<executions>)
<executions>
<execution>
<id>build-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
绑定到任意生命周期阶段!
七、插件管理(<pluginManagement>)
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
父 POM 统一版本,子模块无需重复写
<version>
八、常用插件命令
# 运行插件 goal
mvn compiler:compile
mvn surefire:test
mvn jar:jar
# 列出所有插件
mvn help:describe -Dplugin=compiler
# 查看插件详情
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-shade-plugin -Ddetail
九、插件仓库(Plugin Repository)
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
</pluginRepository>
</pluginRepositories>
十、最佳实践
| 建议 | 说明 |
|---|---|
父 POM 统一 <pluginManagement> | 版本一致 |
| 显式声明版本 | 避免默认旧版本 |
| 使用最新插件 | mvn versions:display-plugin-updates |
| IDEA 插件 | Maven Helper 一键分析 |
十一、插件速查表
| 插件 | 版本 | 命令 |
|---|---|---|
| compiler | 3.13.0 | mvn compiler:compile |
| surefire | 3.2.5 | mvn test |
| shade | 3.6.0 | mvn package |
| spring-boot | 3.3.5 | mvn spring-boot:repackage |
恭喜!你已掌握 Maven 插件!
下一步推荐
| 方向 | 内容 |
|---|---|
| Docker 插件 | fabric8io/docker-maven-plugin |
| 前端插件 | frontend-maven-plugin |
| 代码质量 | sonar-maven-plugin |
需要 Docker + Maven 构建镜像教程?
回复 Docker Maven 立即获取!