我试图从我们需要实现的一个招摇过市的文件中生成接口。它是从外部来源提供的。我通常先使用契约,但在java/kotlin中很长一段时间没有这样做。
我已经建立了一个项目,希望尽可能多地控制我的代码。我尝试使用openapi生成器gradle插件
和
kotlin-spring
或spring
generator来生成接口(导入部分)。
最好是带有Spring相关注释的接口(
UrestMap
s等),至少是接口。但看起来,生成器还会生成一个小应用程序(带有gradle/maven文件、SpringBootApp、README. md...)。
我没有代码了,但我很确定,上次我这样做的时候,很容易生成接口,但不记得我使用了哪个生成器或插件。
所以我的问题是,我是否错过了什么,或者只是创建接口不再是问题了?大家都想在这里搭脚手架吗?
如果您使用gradle与build.gradle.kts
,您可以使用这个openapi生成器插件任务来生成swagger代码。它做同样的事情作为昂首阔步codemen插件:
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
))
}
从您的招摇过市中的路径生成的api
。api配置。json具有生成器的设置。然后,您需要通过执行以下操作将生成的类添加到源集中:
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"
}
我添加了以下属性到我的openApiGenerate
任务:
globalProperties =[
apis: '',
models: '',
]
这为我解决了问题。
我将openapi生成器maven插件与
<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>
我正在使用openapi生成器Gradle插件从openapi模式生成模型文件。在构建中使用这些设置。gradle脚本一切似乎都正常: } 结果类在正确的包中生成: 问题就在这里——我不需要它们在我的源代码中,我只需要它们在编译阶段。我希望它们在构建目录中生成,以将它们与其他逻辑分开。但是,当我将outport-dir更改为"$build dDir/生成". toString()时,会发生这种情况
我正在使用OpenAPI生成器gradle插件和“jaxrs resteasy”生成器,我想知道是否有办法更改输出文件的名称。现在它正在生产ApiApi。java,ApiService。java,ApiException。java等。 有没有办法配置它,这样输出将是MyNameApi.java和MyNameApiService.java? 示例YAML:
我在openapi v.3规范中有一个模型。我使用openapi生成器maven插件为库webclient(spring 5-webflux)生成java客户端。我想发送回客户端文件和http头。生成的代码没有获取响应标头的方法。 为客户端生成的代码不包含提供对响应头访问的代码。例如,如果我使用库resttemplate,则有一个方法public MultiValueMap getResponse
我已经成功地从一个。yaml打开api描述符文件,但正如问题标题中所述,我希望将这些接口的响应类型从ResponseEntity更改为我自己的类型。基本上,接口没有此签名: 对于基本上以这种方式实现的方法: 我希望生成的接口尽可能简单 同样的事情,我自己定义的类,而不是
当使用带有Gradle的OpenAPI生成器时,我希望将性别化的源发送到其他源生成器插件使用的标准目录。类似于Maven生成源的东西。 到目前为止,我还不能这样做,特别是将生成限制为Java源类,而不是整个“原型项目”。 似乎OpenAPI Gradle插件的工作流程与Maven插件的工作流程并不相同。 是否有配置标志来省略所有非java代码的生成,并在“生成的源代码”文件夹(如/out/prod
我从一个openapi规范(3.0.1)设计开始,用openapi生成器maven-plugin(5.1.0)生成代码,然后我使用springdoc-openapi-ui进行Spring引导(2.5.4)。 我需要手动将生成的代码中的大部分注释从io.swagger.annotations.*迁移到io.swagger.v3.oas.annotations.*https://springdoc.o