使用openapi生成器gradle插件仅为spring-boot生成REST接口



我试图从我们需要实现的swagger文件中生成接口。它是从外部来源提供的。我通常先使用contract,但在java/kotlin中很长一段时间都没有这样做。

我已经建立了一个项目,希望尽可能多地控制我的代码。我尝试将openapi-generator-gradle-pluginkotlin-springspring生成器一起使用,以生成接口(导入部分(。

最好是带有弹簧相关注释的接口(RequestMappings等(,至少只有接口。但发电机似乎也会产生一个";小应用程序";(带有gradle/maven文件、SpringBootApp、README.md…(.

我已经没有代码了,但很确定,上次我这么做的时候,只生成接口很容易,但记不清我用了哪个生成器或插件。

所以我的问题是,我是错过了什么,还是仅仅创建接口不再是一个问题?每个人都想在这里搭脚手架吗?

我使用带有<interfaceOnly>true</interfaceOnly>configOption的openapi生成器maven插件。它在等级上应该与kotlin弹簧发生器相似

<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>5.0.0-beta</version>
<executions>
<execution>
<id>1</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>openapi.json</inputSpec>
<generatorName>spring</generatorName>
<modelPackage>modelPackage</modelPackage>
<apiPackage>apiPackage</apiPackage>
<invokerPackage>invokerPackage</invokerPackage>
<configOptions>
<sourceFolder>target</sourceFolder>
<interfaceOnly>true</interfaceOnly>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>

我在openApiGenerate任务中添加了以下属性:

globalProperties =[
apis: '',
models: '',
]

这为我解决了问题。

如果您将gradle与build.gradle.kts一起使用,则可以使用此openapi生成器插件任务来生成swagger代码。它做的事情与swagger代码生成插件相同:

plugins {
id("org.openapi.generator") version "5.1.1"
}
openApiGenerate {
generatorName.set("spring")
inputSpec.set("$rootDir/src/main/resources/petstore.yaml")
outputDir.set("$buildDir/generated/")
configFile.set("$rootDir/src/main/resources/api-config.json")

globalProperties.set(mapOf(
Pair("apis", ""), //no value or comma-separated api names
Pair("models", ""), //no value or comma-separated api names
))
}

apis是从你招摇的路径中生成的。api-config.json具有生成器的设置。然后您需要通过以下操作将生成的类添加到sourceSet中:

configure<SourceSetContainer> {
named("main") {
java.srcDir("$buildDir/generated/src/main/java")
}
}

最后,确保在编译之前生成swagger文件:

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
dependsOn("openApiGenerate")
kotlinOptions.jvmTarget = "11"
}

最新更新