如何用Maven插件删除target文件并替换自定义Swagger CSS?
问题解答
1. Maven项目中能否删除target文件夹内的文件?
完全可以,最常用的方案是使用maven-clean-plugin——它默认会清理整个target目录,也可通过配置指定仅删除特定文件/目录:
<plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.3.2</version> <configuration> <!-- 可选:精准删除target下指定路径的旧CSS文件 --> <filesets> <fileset> <directory>target/${project.artifactId}-${project.version}/css</directory> <includes> <include>main.css</include> </includes> </fileset> </filesets> </configuration> </plugin>
执行mvn clean即可触发清理,也可将clean阶段绑定到资源复制阶段之前,确保先删除旧文件再复制新文件。
2. maven-resources-plugin复制CSS无法覆盖原有文件的解决办法
你的配置存在两个核心问题:未开启覆盖机制,以及执行阶段时机可能早于Swagger生成CSS的阶段(导致自定义CSS被Swagger的默认文件覆盖)。
修改后的配置如下,添加覆盖开关并调整执行阶段:
<plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>copy-custom-swagger-css</id> <phase>process-resources</phase> <!-- 调整阶段,确保在Swagger生成CSS后执行 --> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>target/${project.artifactId}-${project.version}/css</outputDirectory> <overwrite>true</overwrite> <!-- 关键配置:开启文件覆盖 --> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>main.css</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>
额外保障方案
可以结合maven-clean-plugin先清理旧文件,再执行复制:
- 执行
mvn clean删除目标路径下的旧main.css - 执行
mvn resources:copy-resources(或直接mvn package,若复制阶段已绑定到打包流程)
补充建议
- 可通过
mvn help:describe -Dplugin=swagger-maven-plugin -Ddetail查看Swagger插件的执行阶段,确保自定义CSS的复制阶段在它之后运行 - 若仍有问题,可检查
target目录下CSS文件的生成时间,确认自定义文件是否在默认文件之后写入
内容的提问来源于stack exchange,提问作者Albert Albatros
相关产品推荐
相关产品推荐

