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

插件执行配置与过滤

插件支持过滤和跳过配置,灵活控制执行范围。

文件过滤

includes/excludes

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <includes>
      <include>**/service/**/*.java</include>
    </includes>
    <excludes>
      <exclude>**/legacy/**/*.java</exclude>
      <exclude>**/*Deprecated.java</exclude>
    </excludes>
  </configuration>
</plugin>

语法说明

语法说明
**任意目录层级
*任意字符
*.javaJava 文件
**/*.java任意目录下的 Java 文件

surefire 测试过滤

包含/排除测试类

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <includes>
      <include>**/*Test.java</include>
      <include>**/*Tests.java</include>
    </includes>
    <excludes>
      <exclude>**/*IntegrationTest.java</exclude>
      <exclude>**/*SlowTest.java</exclude>
    </excludes>
  </configuration>
</plugin>

测试分组

XML
<configuration>
  <groups>fast</groups>  <!-- 仅执行 fast 组测试 -->
  <excludedGroups>slow,integration</excludedGroups>
</configuration>

resources 过滤

资源文件过滤

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <configuration>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
    <excludes>
      <exclude>**/*.jpg</exclude>
      <exclude>**/*.png</exclude>
    </excludes>
  </configuration>
</plugin>

非过滤文件类型

XML
<configuration>
  <nonFilteredFileExtensions>
    <extension>jpg</extension>
    <extension>png</extension>
    <extension>pdf</extension>
  </nonFilteredFileExtensions>
</configuration>

skip 配置

跳过插件执行

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skip>true</skip>  <!-- 跳过测试 -->
  </configuration>
</plugin>

命令行跳过

Bash
mvn test -Dmaven.test.skip=true
mvn package -DskipTests

skipTests vs maven.test.skip

区别

参数效果
-DskipTests编译测试代码,跳过执行
-Dmaven.test.skip=true不编译、不执行

配置示例

XML
<properties>
  <maven.test.skip>false</maven.test.skip>
  <skipTests>false</skipTests>
</properties>

条件执行

Profile 控制执行

XML
<profiles>
  <profile>
    <id>skip-tests</id>
    <properties>
      <skipTests>true</skipTests>
    </properties>
  </profile>
</profiles>
Bash
mvn package -Pskip-tests

execution 级别跳过

XML
<executions>
  <execution>
    <id>source-jar</id>
    <phase>package</phase>
    <goals>
      <goal>jar</goal>
    </goals>
    <configuration>
      <skipSourceJar>true</skipSourceJar>  <!-- 自定义跳过参数 -->
    </configuration>
  </execution>
</executions>

war 插件过滤

WAR 内容过滤

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <packagingExcludes>
      WEB-INF/classes/**/*.class
    </packagingExcludes>
    <warSourceExcludes>
      **/*.log
    </warSourceExcludes>
  </configuration>
</plugin>

shade 插件过滤

依赖过滤

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <configuration>
    <filters>
      <filter>
        <artifact>junit:junit</artifact>
        <excludes>
          <exclude>**/*</exclude>  <!-- 排除 junit -->
        </excludes>
      </filter>
    </filters>
  </configuration>
</plugin>

assembly 插件过滤

打包内容过滤

XML
<assembly>
  <fileSets>
    <fileSet>
      <directory>target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
      <excludes>
        <exclude>*-sources.jar</exclude>
      </excludes>
    </fileSet>
  </fileSets>
</assembly>

jacoco 过滤

覆盖率排除

XML
<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <configuration>
    <excludes>
      <exclude>**/dto/**</exclude>
      <exclude>**/config/**</exclude>
    </excludes>
  </configuration>
</plugin>

javadoc 过滤

文档排除

XML
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <configuration>
    <excludePackageNames>
      com.example.internal:com.example.legacy
    </excludePackageNames>
  </configuration>
</plugin>

最佳实践

过滤原则

做法说明
明确范围includes 精确指定
排除特殊excludes 排除例外
避免**尽量避免通配符范围过大

skip 原则

场景使用 skip
CI/CD 快速构建
临时调试
生产构建

要点总结

  • includes/excludes 过滤处理文件
  • ** 匹配任意目录,* 匹配任意字符
  • skip 跳过插件执行
  • -DskipTests 编译但不执行测试
  • -Dmaven.test.skip=true 不编译不执行
  • Profile 控制条件执行
  • 各插件支持特定的过滤配置

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

← 上一篇 常用第三方插件应用
下一篇 → 插件目标绑定机制
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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