试图将大摇大摆的codegen与gradle kotlindsl结合起来

试图将大摇大摆的codegen与gradle kotlindsl结合起来,gradle,kotlin,swagger,Gradle,Kotlin,Swagger,我正试图让swagger code gen在一个用gradle(kotlin)构建的项目中工作 我在这里引用的是这个示例:它是在GradleGroovy版本中制作的 build.gradle.kts如下所示: repositories { jcenter() } plugins { java id("org.springframework.boot") version "2.1.2.RELEASE" id("io.spring.dependency-manage

我正试图让
swagger code gen
在一个用gradle(kotlin)构建的项目中工作

我在这里引用的是这个示例:它是在GradleGroovy版本中制作的

build.gradle.kts
如下所示:

repositories {
    jcenter()
}

plugins {
    java
    id("org.springframework.boot") version "2.1.2.RELEASE"
    id("io.spring.dependency-management") version "1.0.6.RELEASE"
    id("org.hidetake.swagger.generator") version "2.16.0"
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation ("io.swagger:swagger-annotations:1.5.21")
    swaggerCodeGen("io.swagger:swagger-codegen-cli:2.3.1")

    // Use JUnit test framework
    testImplementation ("junit:junit:4.12")
}

swaggerSources {
    petstore {
        inputFile = file('petstore.yaml')
        code {
            language = 'spring'
        }
    }
}
但IntelliJ不喜欢台词中关于招摇的说法

我是gradle的新手,所以我不知道该怎么做。斯威格密码应该是一种功能吗?这个函数应该导入到哪里?哪里应该导入
swaggerSources

import org.hidetake.gradle.swagger.generator.GenerateSwaggerCode
import org.hidetake.gradle.swagger.generator.GenerateSwaggerCode

// plugins, repositories are same, but note import above ^^^

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation ("io.swagger:swagger-annotations:1.5.21")
    "swaggerCodegen"("io.swagger:swagger-codegen-cli:2.3.1") // 1

    // Use JUnit test framework
    testImplementation ("junit:junit:4.12")
}

swaggerSources {
    create("petstore").apply { // 2
        setInputFile(file("petstore.yaml")) // 3
        code(closureOf<GenerateSwaggerCode> { // 4
            language = "spring"
        })
    }
}
//插件和存储库是相同的,但请注意上面的导入^^^ 依赖关系{ 实现(“org.springframework.boot:springbootstarterweb”) 实现(“io.swagger:swagger注释:1.5.21”) “swaggerCodegen”(“io.swagger:swagger-codegen cli:2.3.1”)//1 //使用JUnit测试框架 测试实施(“junit:junit:4.12”) } 招摇过市的消息来源{ 创建(“petstore”)。应用{//2 setInputFile(文件(“petstore.yaml”)//3 代码(closureOf{//4 language=“spring” }) } }
1-Kotlin中的动态解析配置如下所示(从Groovy中动态解析,因此在编译时使用它是有问题的,字符串上的扩展调用操作符是我们的救星)

2-
swaggerSources
返回您的
NamedDomainObjectContainer
,以便添加我们调用的新容器
create
,并将其名称作为参数

3-Kotlin不如Groovy灵活,因此调用setter而不是设置字段

4-Groovy的闭包远离功能接口,因此我们在插件的源代码中指定泛型类型
闭包
没有参数化。

导入org.hidetake.gradle.swagger.generator.GenerateSwaggerCode
//插件和存储库是相同的,但请注意上面的导入^^^
依赖关系{
实现(“org.springframework.boot:springbootstarterweb”)
实现(“io.swagger:swagger注释:1.5.21”)
“swaggerCodegen”(“io.swagger:swagger-codegen cli:2.3.1”)//1
//使用JUnit测试框架
测试实施(“junit:junit:4.12”)
}
招摇过市的消息来源{
创建(“petstore”)。应用{//2
setInputFile(文件(“petstore.yaml”)//3
代码(closureOf{//4
language=“spring”
})
}
}
1-Kotlin中的动态解析配置如下所示(从Groovy中动态解析,因此在编译时使用它是有问题的,字符串上的扩展调用操作符是我们的救星)

2-
swaggerSources
返回您的
NamedDomainObjectContainer
,以便添加我们调用的新容器
create
,并将其名称作为参数

3-Kotlin不如Groovy灵活,因此调用setter而不是设置字段


4-Groovy的闭包远离功能接口,因此我们在插件的源代码中指定泛型类型
闭包
没有参数化。

您可能还想尝试OpenAPI生成器gradle插件:您可能还想尝试OpenAPI生成器gradle插件:我需要
swaggerSources
任务。我在
code(closureOf…)。谢谢我需要
swaggerSources
任务。我在
code(closureOf…)。谢谢