我的要求是,我必须从一个招摇的定义中生成springboot服务器代码。我已经通过以下命令(通过使用swagger-codegen-cli-2.3.1.jar)生成了代码。
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中。
<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 package时,我们希望它更新/覆盖所有模型,api和调用者。但是,这不起作用。我们正在看到以下提到的异常。
[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 package时,应重新生成源文件夹以及目标文件夹中服务器存根的所有源代码。 b)如果该类已经存在,则应覆盖它们。我们希望稍后在.swagger-codegen-ignore的帮助下处理覆盖。
我知道有很多关于stackoverflow的讨论线程,但是我找不到任何可以帮助我的解决方案。请对此提供帮助或将我定向到相关主题。
答案 0 :(得分:0)
我遇到了同样的问题,还需要定义输出目录。这是一个片段:
<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>