如何配置实现mvn clean执行时不删除target空目录
问题解答
可以实现,不需要修改Maven核心逻辑,仅通过maven-clean-plugin的正确配置即可达到mvn clean执行后保留空target目录的效果。
你之前配置不生效的核心原因是:maven-clean-plugin默认优先执行内置的根目录删除逻辑——直接递归删除整个target目录,这个动作不会读取你配置的文件排除/保留规则,因此才会出现配置后依然删除整个目录的情况。
可直接复用的配置
将以下配置写入项目pom.xml的<build><plugins>节点下即可:
<plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.3.2</version> <configuration> <!-- 关闭插件默认删除整个target目录的内置逻辑 --> <excludeDefaultDirectories>true</excludeDefaultDirectories> <filesets> <fileset> <directory>target</directory> <includes> <!-- 匹配target目录下所有层级的文件、子目录 --> <include>**/*</include> </includes> <followSymlinks>false</followSymlinks> </fileset> </filesets> </configuration> </plugin>
配置注意事项:
- 请使用3.0.0及以上版本的
maven-clean-plugin,低版本对excludeDefaultDirectories配置项的支持存在缺陷,无法达到预期效果 - 如果项目存在不在
target目录下的构建产物,可在<filesets>节点下新增<fileset>声明对应清理路径,不会干扰空target目录的保留效果
效果验证
配置完成后执行mvn clean命令,插件会清理target目录下的所有内容,但不会删除target目录本身,命令执行完成后你会在项目根目录看到一个空的target文件夹,完全符合需求。
内容的提问来源于stack exchange,提问作者Jan Stanicek
相关产品推荐
相关产品推荐

