gpt4 book ai didi

maven - 为 openapi-generator gradle 插件添加自定义代码生成实现

转载 作者:行者123 更新时间:2023-12-03 03:01:16 24 4
gpt4 key购买 nike

我为 https://github.com/OpenAPITools/openapi-generator 实现了我的自定义代码生成

但我不知道如何将其添加到 gradle 插件。我需要在 gradle 执行 openapi 任务时将其添加到类路径

对于 maven,我可以轻松地将我的自定义实现 com.my.generator:customgenerator:1.0-SNAPSHOT 添加到插件依赖 block 中,

<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-generator-maven-plugin-version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<templateDirectory>myTemplateDir</templateDirectory>
<apiPackage>${default.package}.handler</apiPackage>
<modelPackage>${default.package}.model</modelPackage>
</configuration>
</execution>
</executions>

<dependencies>
<dependency>
<groupId>com.my.generator</groupId>
<artifactId>customgenerator</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>

但是在gradle中我不知道该怎么做

最佳答案

如果您知道 Gradle 插件的工作原理,解决方案很简单。以下是如何做到这一点的步骤:

  • 您需要将自定义生成器类添加到插件的类路径中。但是,您不能在其中使用要使用生成器插件的 Gradle 项目的任何模块,因为在项目的整个编译之前以及在解决依赖关系之前应用了 Gradle 插件。所以,你必须使用已经编译好的jar文件。例如,创建一个新的 Gradle 项目,在其中放置自定义生成器代码并将其发布到 maven 本地存储库 (How to publish source into local maven repository with Gradle?)。然后你可以像这样将它添加到插件类路径中:
  • buildscript {
    repositories {
    mavenLocal()
    mavenCentral()
    }
    dependencies {
    classpath "org.openapitools:openapi-generator:4.3.0"
    classpath "some.custom.openapi:generator:0.0.1"
    }
    }
  • Openapi 生成器使用 Java 服务加载器来加载生成器 (https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html)。因此,在您的自定义生成器项目中创建文件 org.openapitools.codegen.CodegenConfig有内容
  • some.custom.openapi.CustomJavaCodegen
    (此处必须是自定义生成器类的名称)并将其放入文件夹 src/main/resources/META-INF/services/ .
  • 在您的自定义生成器类覆盖方法 getName使用您的生成器名称,您将在 Gradle 文件中的 openApiGenerator 配置中使用该名称。

  • 我通过这些步骤得到了这个。如果我忘记在这里写东西,请发表评论,我会尝试填写缺失的信息。

    关于maven - 为 openapi-generator gradle 插件添加自定义代码生成实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59782230/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com