
maven 默认不支持直接通过 `
在 Maven 构建体系中,源目录(source directory)本身是整体参与编译的单元,POM 中的
真正可行的解决方案是转向“白名单思维”:放弃“排除冲突目录”,转而显式声明只包含需要编译的包路径。这需借助 maven-compiler-plugin 的
以下是在 pom.xml 中的正确配置示例:
org.apache.maven.plugins maven-compiler-plugin 3.8.0 ${maven.compiler.source} ${maven.compiler.target} UTF-8 com/company/my_module/**/*.java
⚠️ 注意事项:
是全量覆盖逻辑:一旦配置,Maven 将忽略 下所有未匹配的文件 ,包括其他合法包。务必确保路径模式覆盖全部需编译的业务代码。- 路径使用 / 分隔,** 表示递归任意层级(如 com/company/my_module/**/*.java 匹配该包下所有子包)。
- 若项目含多个需保留的独立模块路径,可添加多个
元素。 - 多模块项目中,测试阶段可能意外触发其他模块的测试类编译失败(尤其当 src/test/java 跨模块引用时)。此时应显式跳过测试:执行 mvn compile -Dmaven.test.skip=true,或在 POM 中绑定跳过逻辑(推荐 CI 环境统一配置)。
总结:Maven 源码排除的本质不是“减法”,而是“加法”——用










