由于输入结束的swagger maven插件

时间:2017-01-12 07:03:37

标签: java maven swagger

我在pom.xml文件中包含安全定义。当我运行目标mvn compile时,它会引发异常:

  

org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标com.github.kongchen:swagger-maven-plugin:3.1.2:在项目测试中生成(默认):com.fasterxml.jackson.databind.JsonMappingException :由于输入结束而没有要映射的内容

我在Swagger Maven插件中包含了安全性定义,如下所示

<securityDefinitions>
  <securityDefinition>
     <json>src/main/resources/securityDefinition.json</json>
  </securityDefinition>
</securityDefinitions>  

我尝试使用${basedir}但仍然获得上述异常。如规范所说,如何解决这个问题?

该文件将由getClass().getResourceAsStream读取,因此请注意您配置的路径。我怎么能满足这个条件?

1 个答案:

答案 0 :(得分:2)

您需要等待下一个插件发布(3.1.6)。他们只是将更改合并到主分支,并解决了您所面临的类路径文件加载问题。插件执行时使用的类加载器无法访问项目的文件,无论是资源还是Java源文件。

下一个版本将有<jsonPath>标记,以允许访问文件位置和<json>标记以加载类路径文件(解决问题)。

更新(已测试):

如果您不介意,可以使用3.1.6-SNAPSHOT版本。

然后,在你的POM中:

<securityDefinitions>
    <securityDefinition>                            
      <jsonPath>${project.basedir}/securityDefinition.json</jsonPath>
    </securityDefinition>                                                                   
</securityDefinitions>

在JSON文件中,请按照作者的说明进行操作:

https://github.com/kongchen/swagger-maven-plugin