当前位置: 首页 > 知识库问答 >
问题:

Spring Boot项目,使用Gradle,用静态编程语言编码,自动生成OpenAPI kotlin类

唐增
2023-03-14

问题:gradle没有提取生成的源作为源的一部分,因此导入生成的接口失败。

问题:如何添加生成的源代码,以便gradle(使用goovy dsl和kotlin插件)获取它们?

设置:Spring启动-

我可以用OpenAPI生成器Gradle插件生成kotlin类,没有问题。

我使用“interfaceOnly”选项,因此它只创建接口。这意味着我确实需要实现这些。

我使用的是典型的gradle项目设置。现在我不知道在哪里放置生成的文件,以便gradle(和intellj)拾取它们。

openAPI。亚马尔:

openapi: 3.0.1
info:
  version: 0.1.0
  title: Villagechatter Calendar
  description: Villagechatter calendar microservice

tags:
  - name: external
    description: external API
  - name: internal
    description: Internal API for other microservices

paths:
  /hello:
    get:
      responses:
        200:
          description: Ok
          content:
            text/plain:
              schema:
                type: string
                description: demo
                example: Hello World!

build.gradle:

    id("org.springframework.boot") version "2.3.1.RELEASE"
    id("io.spring.dependency-management") version "1.0.9.RELEASE"
    id "org.jetbrains.kotlin.jvm" version "1.3.72"
    id "org.openapi.generator" version "4.3.1"
}
apply plugin: 'kotlin'

group = "com.example"
version = "0.0.1-SNAPSHOT"

repositories {
    mavenCentral()
}

compileKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = "1.8"
    }
}


openApiGenerate {
    inputSpec = "$rootDir/specs/openApi.yaml"
    generatorName = "kotlin-spring"
    //setting package names and interface only with a configFile, should not matter for the problem
    outputDir = "$buildDir/generated-src"
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude group : "org.junit.vintage"
        exclude module : "junit-vintage-engine"
    }
}

我所尝试过的:

sourceSets {
    main {
        kotlin.srcDirs += "PATH-TO-GENERATED-FILES"
    }
}

还尝试创建一个新的源集并将其添加到compileKotlin任务中

我找到的google结果都是关于gradle和kotlin dsl的,对不起,如果这是一个重复,我没有找到解决方案。

共有2个答案

丁弘新
2023-03-14

我设法解决了这个问题:

sourceSets {
    main {
        java {
            srcDir("$buildDir/generated-src")
        }
    }
}
殳越
2023-03-14

您是否正在尝试自动生成它们并将它们用作项目中的源?为什么不直接将它们生成到项目目录中?

outputDir=“$projectDir”

 类似资料:
  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创

  • 我的项目中有这个错误。但是,找不到任何地方如何解决它。有人有这个问题吗? 它会导致每次都重新运行构建。 使用静态编程语言编译守护程序不成功 无法连接到kotlin守护程序。使用回退策略。

  • 如何为方法/类生成注释?只需输入: 推入似乎在IntelliJ IDEA 2016.1.3中不起作用 看起来Dokka已经取代了KDoc,但为什么IntelliJ中没有支持?还是我错过了什么? 澄清:当输入/**enter时,会生成: 但是我想知道为什么没有添加@参数和其他的生成(就像IntelliJ为Java所做的那样)。这些注释也用于记录静态编程语言代码(https://kotlinlang.

  • 我使用Dokka插件生成我的kotlin项目留档 这里是插件urlhttps://github.com/Kotlin/dokka 我已经按照指示完成了我的项目。格雷德尔看起来像 这是我的应用程序/build.gradle的样子 当我执行下面的命令生成文档时 /格拉德鲁·多卡 它最初下载了必要的jar文件,在这个过程完成后,它给了我以下的错误 少校。次要版本52.0 但我无法确定问题是什么,或者我在

  • 我有一个Spring Boot应用程序,以Kotlin为语言,Gradle为构建系统。所以基本上,我试图用应用程序源代码和依赖项构建一个胖jar,可以使用Java命令行工具运行。 Gradle构建脚本: 如果我使用gradle命令运行项目,那么它运行正常。但是当我构建jar并尝试ti运行时,它会抱怨以下错误:- 应用.kt:- 不知道我到底哪里做错了什么。

  • 我是一个初学静态编程语言的学生,正在学习一个示例回收人员视图。我开始编码,但没有得到我应该得到的结果,即使在检查和重新检查代码之后也是如此。然后我注意到,即使使用非常基本的代码,它仍然没有按照应有的方式运行。我将包含基本代码,当使用时,它应该显示一个通用列表。我只得到列表中的一项。我怀疑代码以外的其他东西正在影响结果;但是我还没有达到知道的水平。 请看活动内容。xml: 注意它有行。 下面是列表(

  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D