Maven排除指定废弃目录编译的语法问题求助
解决Maven编译排除废弃目录的问题
正确的maven-compiler-plugin排除配置
Maven编译插件的排除路径是相对于源码根目录(比如src/main/java)的,你需要用**匹配任意子目录,具体配置如下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <!-- 使用最新稳定版本 --> <configuration> <excludes> <exclude>com/company/deprecated/**/*.java</exclude> <exclude>com/partner/company/deprecated/**/*.java</exclude> </excludes> </configuration> </plugin> </plugins> </build>
注意:路径用斜杠/分隔,**表示匹配该目录下所有子目录及文件,*.java匹配所有Java源文件。
替代方案:直接在源码配置中排除
如果编译插件的配置不生效,你可以直接在Maven的源码定义中排除这些目录,这种方式优先级更高:
<build> <sources> <source> <directory>src/main/java</directory> <excludes> <exclude>com/company/deprecated/**</exclude> <exclude>com/partner/company/deprecated/**</exclude> </excludes> </source> </sources> </build>
常见问题排查
- 确认配置位置:多模块项目中,需在对应模块的POM中配置,父POM仅做插件版本管理时,模块POM需继承并启用配置。
- 检查路径准确性:包名转路径时要和文件系统的实际路径完全一致,注意大小写。
- 清理缓存:执行
mvn clean后再重新编译,避免旧编译缓存干扰。
内容的提问来源于stack exchange,提问作者jsrc..programmer
相关产品推荐
相关产品推荐

