如何运行只是通过swagger codegen maven插件生成目标

时间:2018-11-27 21:23:07

标签: maven swagger-codegen

我正在使用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>。)如果指定了特定项目,则会遇到相同的错误,但引用该项目。

问题:

  1. 我什至可以实现我想要的(从规范生成代码,然后 有目标地只编译该代码而不编译整个项目?
  2. 如何找出用于“ prefix:goal”语法的“ prefix”?

最近的是运行mvn generate-sources -Dcheckstyle.skip=true。这会生成,但是我不认为它会编译生成的类。因此,我不得不在Eclipse中清理项目以触发其重新编译。

1 个答案:

答案 0 :(得分:0)

  
      
  1. 如何找出用于“ prefix:goal”语法的“ prefix”?
  2.   

插件的前缀应在此文件中:“ 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>
        ...