Spring Boot OpenAPI Generator Maven插件:多Spec下禁用Application类生成?
解决openapi-generator-maven-plugin多execution生成重复主类的问题
你可以通过以下两种方式实现不生成自动生成的主类,同时保留API、Controller、Delegate等业务类的生成,无需定制OpenAPI Code Generator:
方法一:使用generateApplication参数(推荐,适用于较新版本插件)
在每个execution的configuration中添加<generateApplication>false</generateApplication>,这个参数会单独禁用自动生成主类的逻辑,不会影响其他业务相关类的生成。
示例pom.xml配置片段:
<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>你的插件版本</version> <executions> <!-- 第一个业务模块的execution --> <execution> <id>generate-api-module1</id> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/api/module1-api.yaml</inputSpec> <generatorName>spring</generatorName> <!-- 禁用自动生成主类 --> <generateApplication>false</generateApplication> <!-- 其他业务类生成配置 --> <packageName>com.yourcompany.module1</packageName> <generateApis>true</generateApis> <generateControllers>true</generateControllers> <generateDelegates>true</generateDelegates> <!-- 其余必要配置 --> </configuration> </execution> <!-- 第二个业务模块的execution --> <execution> <id>generate-api-module2</id> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/api/module2-api.yaml</inputSpec> <generatorName>spring</generatorName> <!-- 同样禁用自动生成主类 --> <generateApplication>false</generateApplication> <packageName>com.yourcompany.module2</packageName> <generateApis>true</generateApis> <generateControllers>true</generateControllers> <generateDelegates>true</generateDelegates> <!-- 其余必要配置 --> </configuration> </execution> </executions> </plugin>
方法二:通过supportingFilesToGenerate控制辅助文件生成(适用于旧版本插件)
如果你的插件版本不支持generateApplication参数,可以通过指定需要生成的辅助文件列表,排除主类对应的文件。主类对应的模板文件名为OpenApiGeneratorApplication.java.mustache,不将其加入列表即可避免生成。
示例配置片段:
<configuration> <!-- 仅指定需要生成的辅助文件,排除主类 --> <supportingFilesToGenerate>README.md,pom.xml</supportingFilesToGenerate> <!-- 其他业务类生成配置 --> </configuration>
两种方式都能让你按业务拆分YAML文件生成对应业务类,同时保留自己编写的主类作为项目唯一入口,解决repackage阶段的主类冲突问题。
内容的提问来源于stack exchange,提问作者bernd
相关产品推荐
相关产品推荐

