首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为openapi生成器级插件添加自定义码元实现

为openapi生成器级插件添加自定义码元实现
EN

Stack Overflow用户
提问于 2020-01-17 06:28:52
回答 1查看 1.3K关注 0票数 4

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

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

对于maven,我可以轻松地在插件依赖块中添加我的自定义实现com.my.生成器:定制生成器:1.0-快照,

代码语言:javascript
运行
复制
<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>

但在格拉德尔,我不知道该怎么做

EN

回答 1

Stack Overflow用户

发布于 2020-09-17 12:07:26

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

  1. ,您需要将自定义生成器类添加到插件的类路径中。但是,您不能使用Gradle项目的任何模块,在其中要使用生成器插件,因为Gradle插件是在整个项目编译之前以及在解决依赖关系之前应用的。因此,您必须使用已经编译的jar文件。例如,创建一个新的Gradle项目,您可以在其中放置自定义生成器代码并将其发布到maven本地存储库(How to publish source into local maven repository with Gradle?)。然后可以将它添加到插件类路径中,如下所示:

代码语言:javascript
运行
复制
buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "org.openapitools:openapi-generator:4.3.0"
        classpath "some.custom.openapi:generator:0.0.1"
    }
}

  1. Openapi生成器使用Java来加载生成器(https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html)。因此,在自定义生成器项目中使用content

创建文件。

代码语言:javascript
运行
复制
some.custom.openapi.CustomJavaCodegen

(这里必须是自定义生成器类的名称)并将其放置到src/main/resources/META-INF/services/文件夹中。

使用生成器名称覆盖自定义生成器类中的

  1. 方法getName,您将在Gradle文件中的openApiGenerator配置中使用该方法.

我用这些步骤来完成这个任务。如果我忘了在这里写什么,评论,我会尝试填补缺失的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59782230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档