【问题标题】:How do I fix OpenAPI error in seemingly correct 'inputSpec' for code generation?如何在看似正确的“inputSpec”中修复 OpenAPI 错误以生成代码?
【发布时间】:2021-01-07 09:04:26
【问题描述】:

我正在尝试运行 OpenAPI 生成器,但我不断收到一条没有意义的错误消息。

Failed to execute goal org.openapitools:openapi-generator-maven-plugin:5.0.0-SNAPSHOT:generate (default-cli) on project miguelmunoz.challenge: The parameters 'inputSpec' for goal org.openapitools:openapi-generator-maven-plugin:5.0.0-SNAPSHOT:generate are missing or invalid

问题是我的inputSpec 值指向一个有效的 .yaml 文件。该文件位于src/main/resources/yaml/pizzeria.yaml,我使用复制和粘贴来确保该路径中没有拼写错误。您可以在https://github.com/SwingGuy1024/OpenAPI_inputSpec_Bug 下载最小可重现测试用例。

这是我的插件规范:

        <plugin>
            <groupId>org.openapitools</groupId>
            <artifactId>openapi-generator-maven-plugin</artifactId>
            <!-- RELEASE_VERSION -->
            <version>5.0.0-SNAPSHOT</version>
            <!-- /RELEASE_VERSION -->
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <!-- General Configuration properties taken from -->
                        <!-- https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-maven-plugin/README.md -->
                        <!--Changed to https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator-maven-plugin-->
                        <!-- Modifications from https://stackoverflow.com/questions/64304049/how-to-create-a-spring-boot-rest-server-using-openapitools/64363872#64363872 -->
                        <ignoreFileOverride>${project.basedir}/my-springboot.ignores</ignoreFileOverride>  <!--Added-->
                        <inputSpec>${project.basedir}/src/main/resources/yaml/pizzeria.yaml</inputSpec>
                        <!--the language tag was replaced by the generatorName tag:-->
                        <generatorName>spring</generatorName>
                        <!--<templateDirectory>${project.basedir}/src/gen/templates/</templateDirectory>-->
                        <!--<templateResourcePath>${project.basedir}/src/gen/templates/</templateResourcePath>-->
                        <!-- <output>${project.basedir}</output>-->
                        <!-- Defaults to ${project.build.directory}/generated-sources/openapi -->
                        <apiPackage>com.dummy.pizzeria.api</apiPackage>
                        <modelPackage>com.dummy.pizzeria.model</modelPackage>
                        <invokerPackage>com.dummy.pizzeria</invokerPackage>
                        <packageName>com.dummy.pizzeria.objects</packageName>
                        <groupId>neptunedreams</groupId>
                        <artifactId>pizzeria</artifactId>
                        <library>spring-boot</library>
                        <generateModelTests>false</generateModelTests>
                        <!--<output>${project.basedir}/my-springboot</output> &lt;!&ndash; Added &ndash;&gt;-->
                        <!--<generateSupportingFiles>false</generateSupportingFiles>-->
                        <configOptions>
                            <!-- configOptions are specific to the spring generator. These are taken from -->
                            <!-- https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/spring.md -->
                            <sourceFolder>gen</sourceFolder>
                            <bigDecimalAsString>true</bigDecimalAsString>
                            <dateLibrary>java8</dateLibrary> <!-- Default-->
                            <delegatePattern>false</delegatePattern>
                            <performBeanValidation>true</performBeanValidation>
                            <useBeanValidation>true</useBeanValidation>
                            <skipDefaultInterface>false</skipDefaultInterface>
                            <library>spring-boot</library>
                            <interfaceOnly>true</interfaceOnly>
                        </configOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

【问题讨论】:

    标签: java jpa openapi openapi-generator


    【解决方案1】:

    使用maven的编译阶段

    mvn clean compile
    

    而不是直接使用插件

    mvn openapi-generator:generate
    

    解释:

    诀窍是,不要直接调用插件,而是调用“mvn” clean compile"。对 maven 来说有点混乱,但对 我。对不起各位。

    从这里:OpenAPI Generator | Issue tracker

    【讨论】:

    • "mvn clean generate-sources" 就足够了。顺便说一句,这是从 pom 传递配置的唯一方法吗?!我更喜欢直接调用插件,因为项目可能真的很大。
    • 对我来说也一样,但你不能@simon。尝试将您的 API 外部化为一个小型 maven 模块,并将其作为库/依赖项包含到主项目中。像这样,我只能在你的小库上做“maven clean compile”。
    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    相关资源
    最近更新 更多