Swagger Codegen-缺少带有“ jaxrs-spec”的Jaxb注释

时间:2019-01-11 20:50:06

标签: java jax-rs swagger-codegen

我正在使用'jaxrs-spec'来生成部署在JEE服务器(JBoss Wildfy)中的服务器存根。

由于我需要使用JAXB批注(例如@XmlRootElement)对生成的模型pojos进行批注,因此我启用了“ withXml”选项。这对于“ Java”语言非常有效,但似乎不可能带有“ jaxrs-spec” 。对吗?

结果,由于缺少JAXB批注,尽管yaml文件中定义了xml名称空间,但我的Web服务的jaxrs响应生成了错误的xml(即,没有名称空间声明)。

有人已经设法结合“ jaxrs-spec”语言生成jaxb注释吗?有什么解决方法吗?

伯纳德。

<plugin>    
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.4.0</version>
    ... 
    <configuration>                 
        ...                 
        <language>jaxrs-spec</language>                                                                 
        <generateModels>true</generateModels>
        <withXml>true</withXml> 
        ...
    </configuration>

生成的模型示例:

@ApiModel
public class ReadingRequest {..}

预期:

@ApiModel
@XmlRootElement(namespace="...") // <= missing !
public class ReadingRequest {..}

1 个答案:

答案 0 :(得分:0)

使用以下解决方法临时(?)解决了问题。

  • 从纯mustache template中汲取灵感,替代Jaxrs-spec> Pojo的原始Java template
  • 将修改后的胡子模板(添加JAXB内容)放在我的项目下(例如src / main / resources / templates / pojo.mustache)
  • 更新CodeGen插件的Maven配置以使用此额外模板:
    <configuration>                   
      <templateDirectory>src/main/resources/templates</templateDirectory>
    </configuration>