【问题标题】:OpenAPI custom generator with Maven plugin fails with ClassNotFoundException带有 Maven 插件的 OpenAPI 自定义生成器因 ClassNotFoundException 而失败
【发布时间】:2019-09-30 19:42:45
【问题描述】:

我正在尝试编写一个 OpenAPI 自定义生成器,如 openapi-generator on GitHub 中所述。使用以下命令生成 codegen。

java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar meta \
  -o out/generators/my-codegen -n my-codegen -p com.my.company.codegen

在项目中,我从JavaJAXRSCXFCDIServerCodegen 扩展了MyCodegenGenerator 并添加了所需的小胡子模板。 当我尝试构建新的 codegen 项目时,测试失败了。所以我跳过了测试并构建了项目。然后我继续指南中的后续步骤,将自定义代码生成与 Maven 插件一起使用。如指南中所述,我使用my-codegen 作为generatorName

<generatorName>my-codegen</generatorName>

我遇到以下错误:

org.openapitools.codegen.GeneratorNotFoundException:
    Can't load config class with name 'my-codegen'

尝试了com.my.company.codegen.MyCodegenGeneratorgeneratorName,但仍然出现类似错误。

请帮我解决这个问题。

【问题讨论】:

    标签: maven openapi openapi-generator


    【解决方案1】:

    我能够找到问题的原因。我最初将以下依赖项添加到构建的依赖项部分。

    <dependency>
      <groupId>org.openapitools</groupId>
      <artifactId>my-codegen-openapi-generator</artifactId>
      <version>1.0.0</version>
    </dependency>
    

    将依赖项添加到插件配置的依赖项部分后,我能够解决问题。

    【讨论】:

      【解决方案2】:

      您不必修改 pom.xml。只需检查在您的 *Generator 类中,被覆盖的方法 getName() 返回的字符串与您在测试类中的 .setGeneratorName(..) 方法调用中使用的字符串相同。

      您还必须检查 .setInputSpec(..) 处的路径是否指向一个有效的 yaml 文件,该文件不是开箱即用的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-21
        • 2010-11-04
        • 2018-07-10
        • 1970-01-01
        • 2011-10-22
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        相关资源
        最近更新 更多