无法使用Swagger-Codegen-Maven-Plugin生成代码

问题描述 投票:0回答:1

我尝试在 SpringBoot 项目中使用 Swagger Swagger-Codegen-Maven-Plugin 从 yaml 文件生成 java 代码,但它不起作用。 我已经配置了 swagger-codegen-plugin 并创建了一个 yaml 文件,但是当我尝试编译/生成时,我遇到了相同的错误。 我正在添加我的 pom.xml、yaml 文件和错误日志 如果有人能帮助我,我会很高兴!

    [INFO] 
[INFO] --- swagger-codegen-maven-plugin:3.0.30:generate (default) @ AgentPortal ---
[WARNING] Output directory does not exist, or is inaccessible. No file (.swagger-codegen-ignore) will be evaluated.
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[WARNING] ApiResponse (reserved word) cannot be used as model name. Renamed to ModelApiResponse
[ERROR] 
java.lang.RuntimeException: Could not generate model 'Category'
    at io.swagger.codegen.v3.DefaultGenerator.generateModels (DefaultGenerator.java:451)
    at io.swagger.codegen.v3.DefaultGenerator.generate (DefaultGenerator.java:779)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute_ (CodeGenMojo.java:554)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute (CodeGenMojo.java:319)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Caused by: com.github.jknack.handlebars.HandlebarsException: /handlebars/Java/licenseInfo.mustache:2:6: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Collections$EmptyMap.isEmpty() accessible: module java.base does not "opens java.util" to unnamed module @64502326
    /handlebars/Java/licenseInfo.mustache:2:6
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible (AccessibleObject.java:354)
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible (AccessibleObject.java:297)
    at java.lang.reflect.Method.checkCanSetAccessible (Method.java:199)
    at java.lang.reflect.Method.setAccessible (Method.java:193)
    at com.github.jknack.handlebars.context.MemberValueResolver.cache (MemberValueResolver.java:82)
    at com.github.jknack.handlebars.context.MemberValueResolver.resolve (MemberValueResolver.java:54)
    at com.github.jknack.handlebars.Context$CompositeValueResolver.resolve (Context.java:199)
    at com.github.jknack.handlebars.internal.path.PropertyPath.eval (PropertyPath.java:52)
    at com.github.jknack.handlebars.Context$PathExpressionChain.next (Context.java:361)
    at com.github.jknack.handlebars.Context$PathExpressionChain.eval (Context.java:381)
    at com.github.jknack.handlebars.Context.get (Context.java:621)
    at com.github.jknack.handlebars.Context$PartialCtx.get (Context.java:165)
    at com.github.jknack.handlebars.internal.Variable.value (Variable.java:183)
    at com.github.jknack.handlebars.internal.Variable.merge (Variable.java:160)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.TemplateList.merge (TemplateList.java:95)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.ForwardingTemplate.apply (ForwardingTemplate.java:86)
    at com.github.jknack.handlebars.internal.Partial.merge (Partial.java:228)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.TemplateList.merge (TemplateList.java:95)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:118)
    at com.github.jknack.handlebars.internal.ForwardingTemplate.apply (ForwardingTemplate.java:72)
    at io.swagger.codegen.v3.templates.HandlebarTemplateEngine.getRendered (HandlebarTemplateEngine.java:25)
    at io.swagger.codegen.v3.DefaultGenerator.processTemplateToFile (DefaultGenerator.java:795)
    at io.swagger.codegen.v3.DefaultGenerator.generateModels (DefaultGenerator.java:438)
    at io.swagger.codegen.v3.DefaultGenerator.generate (DefaultGenerator.java:779)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute_ (CodeGenMojo.java:554)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute (CodeGenMojo.java:319)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Collections$EmptyMap.isEmpty() accessible: module java.base does not "opens java.util" to unnamed module @64502326
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible (AccessibleObject.java:354)
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible (AccessibleObject.java:297)
    at java.lang.reflect.Method.checkCanSetAccessible (Method.java:199)
    at java.lang.reflect.Method.setAccessible (Method.java:193)
    at com.github.jknack.handlebars.context.MemberValueResolver.cache (MemberValueResolver.java:82)
    at com.github.jknack.handlebars.context.MemberValueResolver.resolve (MemberValueResolver.java:54)
    at com.github.jknack.handlebars.Context$CompositeValueResolver.resolve (Context.java:199)
    at com.github.jknack.handlebars.internal.path.PropertyPath.eval (PropertyPath.java:52)
    at com.github.jknack.handlebars.Context$PathExpressionChain.next (Context.java:361)
    at com.github.jknack.handlebars.Context$PathExpressionChain.eval (Context.java:381)
    at com.github.jknack.handlebars.Context.get (Context.java:621)
    at com.github.jknack.handlebars.Context$PartialCtx.get (Context.java:165)
    at com.github.jknack.handlebars.internal.Variable.value (Variable.java:183)
    at com.github.jknack.handlebars.internal.Variable.merge (Variable.java:160)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.TemplateList.merge (TemplateList.java:95)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.ForwardingTemplate.apply (ForwardingTemplate.java:86)
    at com.github.jknack.handlebars.internal.Partial.merge (Partial.java:228)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.TemplateList.merge (TemplateList.java:95)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:130)
    at com.github.jknack.handlebars.internal.BaseTemplate.apply (BaseTemplate.java:118)
    at com.github.jknack.handlebars.internal.ForwardingTemplate.apply (ForwardingTemplate.java:72)
    at io.swagger.codegen.v3.templates.HandlebarTemplateEngine.getRendered (HandlebarTemplateEngine.java:25)
    at io.swagger.codegen.v3.DefaultGenerator.processTemplateToFile (DefaultGenerator.java:795)
    at io.swagger.codegen.v3.DefaultGenerator.generateModels (DefaultGenerator.java:438)
    at io.swagger.codegen.v3.DefaultGenerator.generate (DefaultGenerator.java:779)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute_ (CodeGenMojo.java:554)
    at io.swagger.codegen.v3.maven.plugin.CodeGenMojo.execute (CodeGenMojo.java:319)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    at org.codehaus.classworlds.Launcher.main (Launcher.java:47)

我的pom.xml

<properties>
    <java.version>11</java.version>
    <swagger.codegen.plugin.version>3.0.30</swagger.codegen.plugin.version>
    <liquibase.version>3.10.3</liquibase.version>
    <lombok.version>1.18.22</lombok.version>
    <springdoc-openapi-ui.version>1.5.12</springdoc-openapi-ui.version>
    <org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>${liquibase.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>${springdoc-openapi-ui.version}</version>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.xmlunit</groupId>
        <artifactId>xmlunit-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
    <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-annotations</artifactId>
        <version>2.1.11</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${org.mapstruct.version}</version>
                    </path>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.22</version>
                    </path>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-mapstruct-binding</artifactId>
                        <version>0.2.0</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
        <plugin>
            <groupId>io.swagger.codegen.v3</groupId>
            <artifactId>swagger-codegen-maven-plugin</artifactId>
            <version>3.0.30</version>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/swagger-yaml-example.yml</inputSpec>
                <configOptions>
                    <sourceFolder>main/java</sourceFolder>
                    <interfaceOnly>true</interfaceOnly>
                    <dateLibrary>java8</dateLibrary>
                </configOptions>
                <output>${project.build.directory}/generated-sources</output>
                <language>java</language>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <language>java</language>
                        <library>resttemplate</library>
                        <modelPackage>com.swagger.client.codegen.rest.model</modelPackage>
                        <apiPackage>com.swagger.client.codegen.rest.api</apiPackage>
                        <invokerPackage>com.swagger.client.codegen.rest.invoker</invokerPackage>
                        <generateApiTests>false</generateApiTests>
                        <inputSpec/>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这是 yaml 文件的链接 https://editor.swagger.io/?_ga=2.189080811.1540752669.1638456918-1242245777.1637747461

java spring-boot yaml swagger swagger-codegen
1个回答
0
投票

该问题已在插件的更高版本中修复。例如,它适用于

        <groupId>io.swagger.codegen.v3</groupId>
        <artifactId>swagger-codegen-maven-plugin</artifactId>
        <version>3.0.35</version>

java 17

© www.soinside.com 2019 - 2024. All rights reserved.