Swagger Codegen(带有Maven插件)用于OpenAPI 3.0 [英] Swagger Codegen (with maven plugin) for OpenAPI 3.0

查看:440
本文介绍了Swagger Codegen(带有Maven插件)用于OpenAPI 3.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将Swagger Codegen用于OpenAPI 3.0 YAML文件.而且我看到了 Swagger Codegen 3.0.0-rc0 可用.但是当我尝试使用它时,我遇到了问题.详细信息如下:

I want to use Swagger Codegen for OpenAPI 3.0 YAML file. And I see Swagger Codegen 3.0.0-rc0 is available. But when I try to use that I run into issues. Following are the details:

我的带有swagger-codegen插件的pom.xml文件:

My pom.xml file with swagger-codegen plugin:

<plugin>
  <groupId>io.swagger</groupId>
  <artifactId>swagger-codegen-maven-plugin</artifactId>
  <version>3.0.0-rc0</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <inputSpec>${basedir}/src/main/resources/mySpec.yaml</inputSpec>
        <output>target/generated-sources</output>
        <language>spring</language>
        <generateApis>false</generateApis>
        <modelPackage>com.kj.model</modelPackage>
        <apiPackage>com.kj</apiPackage>
        <configOptions>
          <sourceFolder>swagger</sourceFolder>
          <library>spring-mvc</library>
          <interfaceOnly>true</interfaceOnly>
          <useBeanValidation>true</useBeanValidation>
          <dateLibrary>java8</dateLibrary>
          <java8>true</java8>
        </configOptions>
      </configuration>
    </execution>
  </executions>
</plugin>

使用上面的插件,当我运行maven构建时,我得到了这个ServiceConfigurationError,这是堆栈跟踪:

With the above plugin when I run the maven build, I got this ServiceConfigurationError, here is the stack trace:

Exception in thread "main" java.util.ServiceConfigurationError: io.swagger.codegen.CodegenConfig: Provider io.swagger.codegen.languages.java.JavaClientCodegen not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:239)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at io.swagger.codegen.CodegenConfigLoader.forName(CodegenConfigLoader.java:19)
    at io.swagger.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:392)
    at io.swagger.codegen.plugin.CodeGenMojo.execute(CodeGenMojo.java:512)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)

为了解决此问题,我在pom文件的maven插件部分中添加了swagger-codegen-generators依赖项:

In order to fix this I added swagger-codegen-generators dependency within the maven plugin section of pom file:

<dependencies>
  <dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-generators</artifactId>
    <version>1.0.0-SNAPSHOT</version>
  </dependency>
</dependencies>

因此,前面提到的问题已解决,但现在我看到了该NPE

So with this earlier mentioned issue got resolved but now I see this NPE

java.lang.NullPointerException
    at io.swagger.codegen.languages.SpringCodegen.preprocessOpenAPI(SpringCodegen.java:429)
    at io.swagger.codegen.DefaultGenerator.configureGeneratorProperties(DefaultGenerator.java:199)
    at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:716)
    at io.swagger.codegen.plugin.CodeGenMojo.execute(CodeGenMojo.java:534)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)

正如您已经注意到的,我正在使用<language>spring</language><library>spring-mvc</library>.请让我知道Codegen是否已为使用这些配置的3.0.0-rc0的用户工作过.

As you would have noted already that I am using <language>spring</language> and <library>spring-mvc</library>. Please let me know if codegen has worked for someone for 3.0.0-rc0 with these configurations.

注意::我看了这个旧的帖子,但当时类似,3.0.0-rc0不可用.

Note: I looked at this old post which is similar but at that time 3.0.0-rc0 was not available.

推荐答案

要将Swagger Codegen与适用于OpenAPI 3.0.0规范的Maven插件一起使用,您可以考虑使用 OpenAPI Generator (这是Swagger Codegen的社区驱动版本).

To use Swagger Codegen with Maven plug-in for OpenAPI 3.0.0 spec, you may consider using OpenAPI Generator instead (which is a community-driven version of Swagger Codegen).

<dependency>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>3.3.4</version>
</dependency>

参考: https://github.com/OpenAPITools/openapi-generator#12 --- maven中心中的工件

(请参考问题与解答关于为什么我们分叉了Swagger Codegen)

(please refer to the Q&A on why we forked Swagger Codegen)

这篇关于Swagger Codegen(带有Maven插件)用于OpenAPI 3.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆