【发布时间】:2019-04-29 16:56:07
【问题描述】:
我正在使用 swagger codegen maven 插件从 swagger 规范生成服务器存根。如果我运行mvn compile,那么它会正确生成并编译项目。但是,有时我只想运行生成。
具体来说,我想避免编译整个项目并运行另一个在验证阶段运行的插件(checkstyles)。理想情况下,我想从 swagger 规范生成生成的类并编译这些类,而不是整个项目。
这里的用例是,在开发过程中,我可能需要更新规范并在项目作为一个整体无效(或不会,使用新规范)时重新生成。我读过你可以使用“前缀:目标”。我尝试了以下方法,但没有任何效果:
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 (default-cli) 项目 com.carus.api.base:参数 'inputSpec', 'language' 目标 io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate 是 丢失或无效
我的 pom 结构有点复杂。有几个 API。每个人在某些方面都是他们自己的项目。它们有一个共同的父 pom,其中执行目标,项目 pom 只设置某些变量。用作 inputSpec 的变量在项目 pom 中定义,但在基础 pom 中用于语言的变量。 (这里提到的 .base 项目实际上是基础 pom 所在的位置,并且是一个抽象包 (<packaging>pom</packaging>)。如果我指定一个特定项目,我会得到相同的错误,但指的是该项目。
问题:
- 我什至可以实现我想要的(从规范生成代码和 只编译那个代码而不是整个项目)有一个目标?
- 如何找出用于“prefix:goal”语法的“前缀”?
我最接近的是运行mvn generate-sources -Dcheckstyle.skip=true。这会生成,但我认为它不会编译生成的类。所以我必须在 Eclipse 中清理项目以触发它重新编译。
【问题讨论】:
标签: maven swagger-codegen