首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用修改后的swagger定义从swagger-codegen-maven-plugin重新生成源spring引导服务器代码

如何使用修改后的swagger定义从swagger-codegen-maven-plugin重新生成源spring引导服务器代码
EN

Stack Overflow用户
提问于 2019-03-06 19:07:38
回答 1查看 3.3K关注 0票数 1

我的要求是,我必须从swagger定义生成springboot服务器代码。我已经在下面提到的命令的帮助下生成了代码(使用swagger-codegen-cli-2.3.1.jar)。

代码语言:javascript
复制
java -jar swagger-codegen-cli-2.3.1.jar generate ^
     -i nycemoves.yml ^
     --api-package com.nyce.moves.api ^
     --model-package com.nyce.moves.model ^
     --invoker-package com.nyce.moves.invoker ^
     --group-id com.nyce.moves ^
     --artifact-id nyce-moves ^
     --artifact-version 0.0.1-SNAPSHOT ^
     -l spring ^
     --library spring-boot ^
     -o nyce-moves

现在,我们已经更新了swagger定义,并希望重新生成结果模型和api调用器,为此,我们希望使用maven插件。在浏览了互联网上的各种答案后,我们发现了下面的构建插件,它们是我们在pom.xml中添加的。

代码语言:javascript
复制
<plugin>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-codegen-maven-plugin</artifactId>
            <version>2.3.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <inputSpec>src/main/resources/nycemoves.yml</inputSpec>
                        <language>spring</language>
                        <basePackage>${default.package}</basePackage>
                        <modelPackage>${default.package}.model</modelPackage>
                        <apiPackage>${default.package}.api</apiPackage>
                        <invokerPackage>${default.package}.invoker</invokerPackage>
                        <configOptions>
                            <interfaceOnly>true</interfaceOnly>
                            <dateLibrary>java8</dateLibrary>
                            <java8>true</java8>
                            <library>spring-boot</library>
                            <serializableModel>true</serializableModel>
                            <sourceFolder>src/main/java</sourceFolder>                              
                        </configOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>

现在,当我们做mvn clean包时,我们希望它更新/覆盖所有的模型、api和调用器。但是,这是行不通的。我们看到了下面提到的异常。

代码语言:javascript
复制
[INFO] 16 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.516 s
[INFO] Finished at: 2019-03-06T15:05:58+05:30
[INFO] Final Memory: 34M/448M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project nyce-moves: Compilation failure: Compilation failure:
[ERROR] /nyce-moves/src/main/java/com/nyce/moves/api/CommentsApi.java:[29,8] duplicate class: com.nyce.moves.api.CommentsApi
[ERROR] /nyce-moves/target/generated-sources/swagger/src/main/java/com/nyce/moves/model/PostRequest.java:[19,8] duplicate class: com.nyce.moves.model.PostRequest
...

所以,我们实际上需要这个插件来做以下事情,但是我们不能弄清楚它。a)当我们运行mvn clean包时,它应该重新生成源文件夹和目标文件夹中服务器存根的所有源代码。b)在类已经存在的情况下,它应该覆盖它们。我们希望稍后在.swagger-codegen-ignore的帮助下处理覆盖。

我知道在stackoverflow上有很多关于这个问题的讨论,但我在这里找不到任何可以帮助我的解决方案。请在这方面帮助我,或者将我引到相关的帖子。

EN

回答 1

Stack Overflow用户

发布于 2019-10-16 00:04:13

我也有同样的问题,我还需要定义输出目录。下面是一个代码片段:

代码语言:javascript
复制
<configuration>
    <language>spring</language>
    <library>spring-cloud</library>
    <configOptions>
        <sourceFolder>swagger</sourceFolder>
        <interfaceOnly>true</interfaceOnly>
        <dateLibrary>java8</dateLibrary>
    </configOptions>
    <output>${project.build.directory}/generated-sources</output>
</configuration>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55021629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档