Добавить собственную реализацию кодогенерации для плагина openapi-generator gradle

Я использую создание собственного кода для https://github.com/OpenAPITools/openapi-generator

но я понятия не имею, как добавить это в плагин Gradle. Мне нужно добавить его в путь к классам, пока gradle выполняет задачи openapi

Для maven я могу легко добавить свою собственную реализацию com.my.generator: customgenerator: 1.0-SNAPSHOT в блок зависимостей плагина,

<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>

но в градиенте я понятия не имею, как это сделать


person Seldon    schedule 17.01.2020    source источник


Ответы (1)


Решение простое, если вы знаете, как работают плагины Gradle. Вот шаги, как это сделать:

  1. Вам необходимо добавить свой собственный класс генератора в путь к классам плагина. Но вы не можете использовать там какой-либо модуль проекта Gradle, в котором вы хотите использовать плагин генератора, потому что плагины Gradle применяются перед всей компиляцией проекта, а также до разрешения зависимостей. Итак, вы должны использовать уже скомпилированный файл jar. Например, создайте новый проект Gradle, в котором вы разместите собственный код генератора и опубликуете его в локальном репозитории maven (Как опубликовать исходный код в локальном репозитории maven с помощью Gradle?). Затем вы можете добавить его в путь к классам плагинов следующим образом:
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). Итак, в вашем проекте настраиваемого генератора создайте файл org.openapitools.codegen.CodegenConfig с содержимым
some.custom.openapi.CustomJavaCodegen

(Здесь должно быть имя настраиваемого класса генератора) и поместите его в папку src/main/resources/META-INF/services/.

  1. В вашем собственном методе переопределения класса генератора getName укажите имя вашего генератора, которое вы будете использовать в конфигурации openApiGenerator в файле Gradle.

Я получаю это, работая с этими шагами. Если я что-то забуду написать здесь, прокомментируйте, а я постараюсь заполнить недостающую информацию.

person OrdinaryNick    schedule 17.09.2020
comment
Это был ответ, который я искал, большое спасибо! Я хотел бы добавить этот ресурс при создании локального пакета Maven: docs. gradle.org/current/userguide/. - person DevNebulae; 07.06.2021