Cle*_*mzd 3 gradle kotlin swagger openapi
我正在尝试swagger codegen
在使用 gradle (kotlin) 构建的项目中工作。
我的参考是这里的示例: https: //github.com/int128/gradle-swagger-generator-plugin,它是在Gradle groovy版本中制作的。
现在情况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'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但 IntelliJ 不喜欢谈论 swagger 的台词:
我是 gradle 的新手,所以我不明白我应该做什么。swaggerCodeGen 应该是一个函数吗?这个函数应该在哪里导入?swaggerSources
应该从哪里进口?
小智 5
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"
})
}
}
Run Code Online (Sandbox Code Playgroud)
1 - Kotlin 中的动态解析配置如下所示(从 Groovy 动态解析,因此在编译时使用它会出现问题,String 上的扩展调用运算符是我们的救世主);
2 -swaggerSources
返回您NamedDomainObjectContainer<SwaggerSource>
,因此为了添加新容器,我们使用create
它的名称作为参数来调用;
3 - Kotlin不像Groovy那么灵活,因此调用setter而不是设置字段;
4 - Groovy 的闭包与函数式接口相去甚远,因此我们指定通用类型,因为插件的源代码Closure
未参数化。
归档时间: |
|
查看次数: |
4866 次 |
最近记录: |