OpenApi:从多个文件中生成Java / kotlin DTO

时间:2019-11-26 20:38:53

标签: swagger openapi swagger-codegen openapi-generator

我在导入用于Java和Kotlin的openapi-generator的生成代码时遇到问题。

假设我有一个root.yaml / child1.yaml / child2.yaml,其内容如下:

components:
  schemas:
    Transfer:
      type: object
      allOf:
        - $ref: "child1.yaml#/components/schemas/Pet1"
        - $ref: "child2.yaml#/components/schemas/Pet2"

child1.yaml:

components:
  schemas:
    Pet1:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        tag:
          type: string

child2.yaml:

components:
  schemas:
    Pet2:
      type: object
      required:
        - id2
        - name2
      properties:
        id2:
          type: integer
          format: int64
        name2:
          type: string
        tag2:
          type: string

在这种情况下,我不在乎child1 / child2中的实体,我只希望构建Transfer-object,所以我仅用Transfer填充了modelsToGenerate-settings。我的问题是,即使不需要,生成的Transfer类也始终包含子项的导入。例如:

import com.model.Pet1
import com.model.Pet2

data class Transfer (
    val id: kotlin.Long,
    val name: kotlin.String,
    val id2: kotlin.Long,
    val name2: kotlin.String,
    val tag: kotlin.String? = null,
    val tag2: kotlin.String? = null
)

生成的类不依赖于子级,但是始终生成导入。有没有我错过的设置或解决方法?生成Pet1和Pet2时,也会出现不必要的导入,但是Transfer仍然不依赖于子项。 我的用例是,我在规范中确实有一些非常大的模型,并且我希望将它们拆分为多个文件,以减少混乱/重复,而无需为每个孩子创建一个公共类。

谢谢。

1 个答案:

答案 0 :(得分:0)

自己找到答案。生成类后,必须运行Google Java格式化程序之类的格式化程序。