Maven 插件

Maven 插件(Plugins)完全解析(2025 最新版)

一句话总结
Maven 插件 = 构建的“工具箱”,每个生命周期阶段都由插件执行,自定义构建全靠插件!


一、Maven 插件是什么?

  • 插件 = 一组 goal(目标)
  • 每个 goal 执行一个具体任务(如:编译、打包、测试)
  • Maven 核心极简,功能全靠插件扩展
Maven 核心(只做协调) → 调用插件 → 执行 goal

二、插件 vs 生命周期绑定(核心机制)

生命周期阶段默认绑定插件执行的 goal
compilemaven-compiler-plugincompile
testmaven-surefire-plugintest
packagemaven-jar-plugin / maven-war-pluginjar / war
installmaven-install-plugin:
deploymaven-deploy-plugindeploy

运行 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打包 WARwarWeb 项目
maven-shade-plugin打包“胖 JAR”shade可执行 JAR
maven-assembly-plugin自定义打包single带依赖 ZIP
maven-source-plugin打包源码jarsources.jar
maven-javadoc-plugin生成 API 文档jarjavadoc.jar
spring-boot-maven-pluginSpring 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 一键分析

十一、插件速查表

插件版本命令
compiler3.13.0mvn compiler:compile
surefire3.2.5mvn test
shade3.6.0mvn package
spring-boot3.3.5mvn spring-boot:repackage

恭喜!你已掌握 Maven 插件!


下一步推荐

方向内容
Docker 插件fabric8io/docker-maven-plugin
前端插件frontend-maven-plugin
代码质量sonar-maven-plugin

需要 Docker + Maven 构建镜像教程
回复 Docker Maven 立即获取!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注