【Maven 】 <resources> 配置中排除 fonts/** 目录无效,可能是由于以下原因及解决方案:
如果 Maven 的 <resources>
配置中排除 fonts/**
目录无效,可能是由于以下原因及解决方案:
总结:用方法一即可
1. 检查资源过滤是否生效
确保 <build>
部分正确配置了 resources
插件:
<build><resources><resource><directory>src/main/resources</directory><excludes><exclude>fonts/**</exclude></excludes><!-- 如果需要过滤变量,添加此配置 --><filtering>false</filtering></resource></resources>
</build>
2. 验证目录结构
确认 fonts
文件夹的物理路径是否正确:
src/
└── main/└── resources/└── fonts/ # 确保这是要排除的目录├── font1.ttf└── font2.otf
3. 清理并重新构建
Maven 可能会缓存资源文件,执行以下命令强制刷新:
mvn clean package
# 或
mvn clean install -U
4. 检查其他插件干扰
某些插件(如 spring-boot-maven-plugin
)可能会覆盖资源配置。添加显式排除:
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>non-exists</groupId><artifactId>non-exists</artifactId><classifier>fonts/**</classifier></exclude></excludes></configuration>
</plugin>
5. 使用绝对路径排除
尝试使用完整路径匹配:
<exclude>**/fonts/**</exclude>
6. 调试资源处理
查看 Maven 实际处理的资源文件列表:
mvn resources:resources -X | grep "Copying"
检查输出中是否仍包含 fonts
目录下的文件。
7. 替代方案:手动删除
如果配置仍不生效,可在打包后手动删除:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><executions><execution><phase>package</phase><goals><goal>run</goal></goals><configuration><target><delete dir="${project.build.outputDirectory}/fonts"/></target></configuration></execution></executions>
</plugin>
验证是否生效
打包后检查生成的 target/classes
或 JAR 文件中是否仍包含 fonts
目录:
jar tf target/your-app.jar | grep fonts/
常见问题原因
- 多模块项目中子模块配置被父 POM 覆盖
- 其他插件(如
maven-war-plugin
)的重复资源处理 - IDE 缓存导致(尝试重启 IDE 或手动清理
target
目录)
通过以上步骤应能解决资源排除问题。如果仍不生效,建议提供完整的 pom.xml
和项目结构进一步分析。