在我们的项目(java/spring/gradle stack)中,我们使用的是openApi规范。我们为他们提供了一些服务和规格。此外,我们在每个规范中都有重复的公共模块。我们将这些公共模块移动到一个单独的规范文件中,并将其包含在其他规范中。例如:
specific_project1:
openapi:
spec.yaml
common_modules.yaml
build.gradle
规范yaml有下一个代码:
openapi: 3.0.0
info:
version: 0.0.1
paths:
/specific/post:
post:
requestBody:
context:
application/json:
schema:
$ref: "common_modules.yaml#/components/schemas/TestModule"
和公共_模块。yaml下一个:
openapi: 3.0.0
info:
version: 0.0.1
components:
schemas:
TestModule:
type: object
properties:
value:
type: string
因此,我们需要用包名com生成spec.yaml。具体的项目1,通用_模块。yaml是用包名com生成的。常见的模块和从spec.yaml生成的java类具有对带有包的TestModule的导入。常见的导入中的模块。
我们找到了如何引用同一个对象的解决方案。我们将TestModule作为一个单独的项目发布,它有自己的包,在其他项目中,我们使用importMappings配置来定义对象的正确包名。
importMappings = [
TestModule: "com.common.modules.TestModule"
]
是的,这是可能的
当您添加openapi插件进行构建时。等级式
plugins {
id "org.openapi.generator" version "4.3.0"
}
您可以访问openApiGenerate任务,
可以这样修改,例如:
openApiGenerate {
generatorName = "jaxrs-jersey"
inputSpec = "$rootDir/spec-v1.yaml".toString()
outputDir = "$rootDir/".toString()
apiPackage = "name.of.api.package.rest.server.v1.api"
invokerPackage = "name.of.api.package.rest.server.v1.invoker"
modelPackage = "name.of.api.package.rest.server.v1.model"
configOptions = [
library: "jersey2"
]
}
这里是所有可能的修改,你可以做相关的Spring链接,例如https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/spring.md
对于发电机的完整列表:https://github.com/OpenAPITools/openapi-generator/tree/master/docs/generators
为了在一个项目中使用2个yaml文件,您必须做以下工作。
task common(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
generatorName = "spring"
inputSpec = "$rootDir//schema/common.yaml".toString()
outputDir = "$rootDir/generated".toString()
apiPackage = "com.abc.code.generated.controller"
modelPackage = "com.abc.code.generated.model"
configOptions = [
dateLibrary: "java8"
]
systemProperties = [
invoker : "false",
generateSupportingFiles: "true"
]
additionalProperties = [
interfaceOnly : "true",
]
您可以为spec.yaml保留openApiGenerate,但请确保添加
compileJava.dependsOn common , tasks.openApiGenerate
所以你要同时执行这两个命令。希望我能帮上忙。
对于来说,肯定有某种方法可以产生这个输出,不是吗?我发现有一些将映射到,所以似乎有一种方法可以让它产生类型,但我没有找到
我正在尝试在我的Android项目上启用proguard代码混淆。这些年来,我看到了很多问题,但很多线索都是相当古老的,很难说出它们对我有多大的相关性。 2编辑项目。属性,取消注释 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 3由于pro Guard-Project.txt不
问题内容: 这是我的代码示例: 是否可以使用我的paxkage(bio)中的函数而无需指定包名称: ? 问题答案: 您可以将其用作导入声明,例如: 如果出现显式的句号()而不是名称,则在该软件包的package块中声明的所有软件包导出的标识符都将在导入源文件的file块中声明,并且 必须在不使用限定符的情况下进行访问 。 这就是像govey这样的测试框架所做的: 您不需要使用,或者由于导入以’开头
当记录一个会话与wiremock独立,我得到的映射文件生成其中包括一个链接到身体与相同的鉴别器。 是否有一种方法可以控制(种子)鉴别器的命名,以便我可以让录制在每个录制会话上生成相同的存根名称? 这会让我的git历史不那么混乱!
我正在从swagger(Open API 2)转向springdoc(Open API 3),但今天在某些情况下,我使用swagger-codemen-maven-plugin从yaml生成代码(用于客户端和提供商),遵循合同优先策略。下面是配置示例: 使用springdoc openapi maven插件生成代码有没有等效的选项?
我试图针对H2数据库运行jOOQ代码生成器,但遇到以下异常: 我已经核实了数据库确实存在。我怀疑这是由于区分大小写处理不匹配造成的: jOOQ引用所有模式对象的名称,作为指定case instivity的一种方法。。。但是, H2使用引号强制区分大小写 我知道如何以编程方式指定渲染设置来使用生成的工件(构建查询等),但在这种情况下,我正在寻找一种方法来指定代码生成器配置中的这些设置。 提前谢谢!