插件执行配置与过滤
插件支持过滤和跳过配置,灵活控制执行范围。
文件过滤
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>
语法说明
| 语法 | 说明 |
|---|---|
| ** | 任意目录层级 |
| * | 任意字符 |
| *.java | Java 文件 |
| **/*.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 控制条件执行
- 各插件支持特定的过滤配置
📝 发现内容有误?点击此处直接编辑