有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用openapigeneratorgradleplugin仅为spring引导生成REST接口

我试图从我们需要实现的一个招摇过市的文件中生成接口。它是从外部来源提供的。我通常先使用契约,但在java/kotlin中很长一段时间没有这样做

我已经建立了一个项目,希望尽可能多地控制我的代码。我尝试使用openapi-generator-gradle-pluginkotlin-springspring生成器来生成接口(导入部分)

最好是带有spring相关注释的接口(RequestMapping等),至少是接口。但是,生成器似乎也生成了一个“小应用程序”(带有gradle/maven文件、SpringBootApp、README.md…)

我已经没有代码了,但是我很确定,上次我这么做的时候,很容易生成接口,但是我记不起使用了哪个生成器或插件

所以我的问题是,我是否错过了什么,或者只是创建接口不再是问题了?大家都想在这里搭脚手架吗


共 (3) 个答案

  1. # 1 楼答案

    我在我的openApiGenerate任务中添加了以下属性:

        globalProperties =[
                apis: '',
                models: '',
        ]
    

    这为我解决了问题

  2. # 2 楼答案

    如果您正在将gradle与build.gradle.kts一起使用,那么可以使用这个openapi-generator插件任务来生成炫耀代码。 它与swagger codegen插件的功能相同:

    plugins {
        id("org.openapi.generator") version "5.1.1"
    }
    
    openApiGenerate {
        generatorName.set("spring")
        inputSpec.set("$rootDir/src/main/resources/petstore.yaml")
        outputDir.set("$buildDir/generated/")
        configFile.set("$rootDir/src/main/resources/api-config.json")
    
    
        globalProperties.set(mapOf(
            Pair("apis", ""), //no value or comma-separated api names
            Pair("models", ""), //no value or comma-separated api names
        ))
    }
    

    从你大摇大摆中的路径生成的apisapi-config.json具有generator的设置。 然后需要通过以下操作将生成的类添加到源集中:

    configure<SourceSetContainer> {
        named("main") {
            java.srcDir("$buildDir/generated/src/main/java")
        }
    }
    

    最后,请确保在编译之前生成了swagger文件:

    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        dependsOn("openApiGenerate")
        kotlinOptions.jvmTarget = "11"
    }
    
  3. # 3 楼答案

    我使用带有<interfaceOnly>true</interfaceOnly>配置选项的openapi生成器maven插件。gradle和kotlin弹簧发生器应类似

    <plugin>
      <groupId>org.openapitools</groupId>
      <artifactId>openapi-generator-maven-plugin</artifactId>
      <version>5.0.0-beta</version>
      <executions>
        <execution>
          <id>1</id>
          <goals>
            <goal>generate</goal>
          </goals>
          <configuration>
            <inputSpec>openapi.json</inputSpec>
            <generatorName>spring</generatorName>
            <modelPackage>modelPackage</modelPackage>
            <apiPackage>apiPackage</apiPackage>
            <invokerPackage>invokerPackage</invokerPackage>
            <configOptions>
              <sourceFolder>target</sourceFolder>
              <interfaceOnly>true</interfaceOnly>
            </configOptions>
          </configuration>
        </execution>
      </executions>
    </plugin>