如何阻止Swagger生成指定文件?.swagger-codegen-ignore配置失效排查
解决Swagger Codegen跳过指定文件生成的问题
1. 修正.swagger-codegen-ignore的存放位置
插件默认会在输出目录(即你配置的${project.build.directory}/swagger)生成默认忽略文件,但你需要将自定义的.swagger-codegen-ignore放在项目根目录,或者通过插件配置明确指定文件路径,确保插件优先读取你的配置。
2. 修正忽略规则的路径格式
你当前写的src/main/java/com.gls.AMC.java格式错误,需调整为相对输出目录的路径(用斜杠分隔包路径,而非点):
- 若生成的目标文件路径是
target/swagger/src/main/java/com/gls/AMC.java,忽略规则应写为:src/main/java/com/gls/AMC.java - 也可使用通配符简化规则,比如匹配所有同名文件:
**/AMC.java
3. 在Maven插件中强制指定忽略文件
在插件的<configuration>节点添加<ignoreFileOverride>配置,直接指向你自定义的忽略文件,避免插件生成默认文件覆盖你的配置:
<plugin> <groupId>io.swagger</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <!-- 原有配置保持不变 --> <library>jersey2</library> <inputSpec>${project.build.directory}/${xXX.swagger.json.file}/XXXXXXRestSwaggerApiSpec.json</inputSpec> <output>${project.build.directory}/swagger</output> <apiPackage>com.xxx.rest.api</apiPackage> <modelPackage>com.xxx.rest.model</modelPackage> <configOptions> <supportingPackage>com.xxx.rest</supportingPackage> <dateLibrary>legacy</dateLibrary> </configOptions> <templateDirectory>${project.build.directory}/templates/xxx-client-api-${xxx.version}</templateDirectory> <language>com.xxx.swagger.codegen.xxxApiCodeGen</language> <addCompileSourceRoot>false</addCompileSourceRoot> <!-- 添加该行指定自定义忽略文件路径 --> <ignoreFileOverride>${project.basedir}/.swagger-codegen-ignore</ignoreFileOverride> </configuration> </execution> </executions> </plugin>
4. 检查自定义CodeGen的兼容性
由于你使用了自定义的com.xxx.swagger.codegen.xxxApiCodeGen生成器,需确认该自定义实现是否兼容.swagger-codegen-ignore规则。如果它重写了文件生成逻辑,可能会跳过默认的忽略机制,这种情况下需要修改自定义CodeGen的代码,添加对忽略规则的解析和判断逻辑。
5. 验证步骤
- 将修正后的
.swagger-codegen-ignore放在项目根目录,示例内容:# 忽略指定模型类 src/main/java/com/gls/AMC.java # 可选:用通配符忽略整个包下的文件 # src/main/java/com/gls/**/*.java - 执行
mvn clean generate-sources单独测试代码生成,无需直接跑install,更快排查问题 - 检查
target/swagger目录下是否仍生成目标文件,以及.swagger-codegen-ignore是否为你自定义的版本
内容的提问来源于stack exchange,提问作者S Singh
相关产品推荐
相关产品推荐

