我正在使用swagger codegen maven插件根据swagger规范生成服务器存根。如果我运行mvn compile
,它将正确生成并编译项目。但是,有时我只想运行生成。
具体地说,我想避免既编译整个项目,又避免运行在验证阶段运行的另一个插件(checkstyles)。理想情况下,我想从大方的规范中生成生成的类,并编译那些类,而不是整个项目。
这里的用例是,在开发过程中,我可能需要更新规范,并在整个项目无效(或使用新规范无效)时重新生成规范。我读过您可以使用“ prefix:goal”。我已经尝试了以下方法,但是没有用:
mvn swagger-codegen-maven-plugin:generate
mvn swagger-codegen:generate
mvn swagger:generate
mvn codegen:generate
它给出(例如)
在当前项目和 可用的插件组[org.apache.maven.plugins,org.codehaus.mojo] 从存储库中
我还读到您可以使用“ groupid:artificatid:version_goal”,所以我尝试了:
mvn io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate
这似乎更进一步,但给出了错误
无法执行目标 io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate (默认cli)在项目com.carus.api.base上:参数 目标的“ inputSpec”,“语言” io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate are 丢失或无效
我的pom结构有点复杂。有几种API。每个人在某种程度上都是他们自己的项目。它们具有一个共同的父pom,其中包含执行目标,而project pom仅设置某些变量。在项目pom中定义了用作inputSpec的变量,但在基本pom中定义了用于语言的变量。 (这里提到的.base项目实际上是基本pom所在的位置,并且是一个抽象包(<packaging>pom</packaging>
。)如果指定了特定项目,则会遇到相同的错误,但引用该项目。
问题:
最近的是运行mvn generate-sources -Dcheckstyle.skip=true
。这会生成,但是我不认为它会编译生成的类。因此,我不得不在Eclipse中清理项目以触发其重新编译。
答案 0 :(得分:0)
- 如何找出用于“ prefix:goal”语法的“ prefix”?
插件的前缀应在此文件中:“ swagger-maven-plugin-2.3.1.jar / META-INF / maven / com.github.kongchen / swagger-maven-plugin / plugin-help.xml “。
<plugin>
<name>Swagger Maven Plugin</name>
...
<goalPrefix>swagger</goalPrefix>
...