2017-06-18 38 views
0

如何讓swagger codegen使用現有的類而不是創建新的類?這可能嗎?例如,我想使用org.springframework.data.domain.Page而不是創建另一個頁面類的swagger。Swagger Codegen使用現有的類

回答

1

你可以使用--import-mappings,因爲它是解釋here

有時候你不想生成的模型做的。在這種情況下,您可以通過 只需指定一個導入映射來告訴代碼生成器不會對 創建什麼。當這樣做時,每個引用特定 模型的位置都會引用您的類。

swagger-codegen-cli generate調用此,與大家包括例如,它會

--import-mappings Page=org.springframework.data.domain.Page

雖然importMappings尚未納入常規配置參數here,如果你看一下代碼here你可以看到它是一個List<String>。 我還沒有與Maven插件,但看doc和我猜的代碼中使用它這應該工作:

<plugin> 
    <groupId>io.swagger</groupId> 
    <artifactId>swagger-codegen-maven-plugin</artifactId> 
    <version>2.2.2-SNAPSHOT</version> 
    <executions> 
     <execution> 
      ... 
      <configuration> 
       ... 
       <importMappings> 
        <importMapping>Page=org.springframework.data.domain.Page</importMapping> 
       </importMappings> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

但是,這是recently changed,所以它可能如果你使用的是不同的舊版本的插件。在此之前,改變它似乎是這樣的:

<plugin> 
    <groupId>io.swagger</groupId> 
    <artifactId>swagger-codegen-maven-plugin</artifactId> 
    <version>2.2.2-SNAPSHOT</version> 
    <executions> 
     <execution> 
      ... 
      <configuration> 
       ... 
       <configOptions> 
        <import-mappings>Page=org.springframework.data.domain.Page;Some=org.example.Some</import-mappings> 
       </configOptions> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

根據應得的支持在提交舊版本的評論,但我還沒有嘗試過這個,所以讓我知道,如果它的工作原理。

+0

啊,謝謝。你知道我如何用swagger code-gen maven插件來配置它嗎? – Snickers3192

+0

我已經更新瞭如何使用它的基礎上的代碼,我沒有嘗試過,所以它可能無法正常工作。但至少如果給你一個在哪裏尋找它的想法。 – moondaisy

+0

感謝你是我在我的POM中到達那個舞臺,我發現那個笨拙的人有點笨,它不會爲Page創建一個類,並且它會錯過''import org.springframework.data.domain.Page',所以我無論如何都必須手動編輯模板文件。你也不能改變你的類的名字,所以我不能有一個頁面的資源A和資源B是相同的swagger文件。哈哈,我要在github上提交一個問題哈哈。 – Snickers3192

相關問題