我当前在
build.gradle
中的 OpenAPI 生成器设置。
def openApiGeneratorConfig = {
classpath configurations.openApiGenerator
systemProperties = ["apis": "", "models": ""]
mainClass = 'org.openapitools.codegen.OpenAPIGenerator'
args 'generate'
args '-o', "$rootDir/external"
args '-t', "$rootDir/external/src/main/resources/codegen/templates/"
args '--skip-validate-spec'
args "--import-mappings", "Instant=java.time.Instant,YearMonth=java.time.YearMonth,LocalDateTime=java.time.LocalDateTime"
args "--type-mappings", "double=BigDecimal"
}
def configFilesRoute = "$rootDir/external/src/main/resources/config/swagger"
task generateExternalApiClient(type: JavaExec) {
configure openApiGeneratorConfig
systemProperties = ["apis": "ContractSearch#findContractByCustomerId"]
args "-i", "http://localhost:9901/v2/api-docs"
args "-c", "$configFilesRoute/loan.json"
}
在
ContractSearch
(Api)中,我有很多端点(操作),我只需要生成一个特定端点。
因此,在此之前(迁移到 OpenAPI Generator),我使用了 Swagger CodeGen,如果我使用符号 # 作为分隔符指定 api 之后的操作,那么它工作得很好,并且它只生成一个特定的端点。
但现在迁移到 OpenAPI Generator 后,这种行为不起作用。我用谷歌搜索并检查了文档,没有找到我的问题的任何答案。
Java 17。Spring Boot 2.7、Gradle 8.2、OpenAPI 生成器 CLI 6.6.0
我尝试在 OpenAPI 配置中添加差异参数,但也没有帮助我。
自 OpenApi 生成器版本 7.4 起,您可以使用 FILTER 类型的 openapiNormalizer 指定要生成的端点。一种方便的方法是通过操作 ID 过滤端点。 请参阅文档了解更多信息。
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/java-okhttp/ --openapi-normalizer FILTER="operationId:addPet|getPetById"
在您的示例中,您需要添加
args "--openapi-normalizer", "FILTER=operationId:myEndpoint"
作为参考,maven 插件是:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.4.0</version>
<executions>
<execution>
<id>generate-server</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
...
<openapiNormalizer>FILTER=operationId:createNamesContactPerson</openapiNormalizer>
<configOptions>
...
</configOptions>
</configuration>
</execution>
</executions>
</plugin>