带有 Maven 插件的 OpenAPI 自定义生成器因 ClassNotFoundException 而失败

OpenAPI custom generator with Maven plugin fails with ClassNotFoundException

我正在尝试编写 openapi-generator 中提到的 OpenAPI 自定义生成器 在 GitHub 上。使用以下命令生成代码生成器。

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 并添加了所需的小胡子模板。 当我尝试构建新的代码生成项目时,测试失败了。所以我跳过了测试并构建了项目。然后我继续执行指南中的后续步骤,以将自定义代码生成器与 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.MyCodegenGenerator 以及 generatorName,但仍然出现类似的错误。

请帮我解决这个问题。

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

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

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

您不必修改 pom.xml。只需检查在您的 *Generator class 中,覆盖方法 getName() returns 与您在测试 class.[= 中调用 .setGeneratorName(..) 方法时使用的字符串相同。 10=]

此外,您还必须检查 .setInputSpec(..) 处的路径是否指向有效的 yaml 文件,但实际情况并非如此。