如何在Maven项目中排除已添加的本地非Maven源的子文件夹?
解决Maven项目添加外部源后排除特定子文件夹的问题
方案1:通过maven-compiler-plugin排除编译文件
既然你已经用build-helper-maven-plugin把alpha/charlie/addedsource添加为源目录,可以直接在编译插件里配置排除规则,让Maven跳过excludedfolder下的所有Java文件:
<build> <plugins> <!-- 保留你已有的build-helper配置 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>../../charlie/addedsource</source> </sources> </configuration> </execution> </executions> </plugin> <!-- 配置编译插件排除目标文件夹 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <excludes> <!-- 匹配excludedfolder下所有Java文件,路径基于源目录根 --> <exclude>**/excludedfolder/**/*.java</exclude> </excludes> </configuration> </plugin> </plugins> </build>
方案2:如果包含资源文件,补充maven-resources-plugin配置
如果excludedfolder里还有需要排除的资源文件(比如配置文件、静态资源),再添加资源插件的排除规则:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <configuration> <excludes> <exclude>**/excludedfolder/**/*</exclude> </excludes> </configuration> </plugin>
方案说明
- 不同于IDE本地设置或
.iml文件,pom.xml里的配置是Maven核心识别的规则,项目同步、重载都不会被覆盖。 - IntelliJ会自动读取Maven的编译/资源排除配置,同步后IDE里也会显示该文件夹被排除,无需手动重复设置。
内容的提问来源于stack exchange,提问作者Marcus Persson
相关产品推荐
相关产品推荐

