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"
})
}
}
1 - динамически разрешенная конфигурация в Kotlin выглядит следующим образом (динамически из Groovy, поэтому использовать ее во время компиляции проблематично, оператор вызова расширения для String - наш спаситель);
2 -swaggerSources
возвращает вас NamedDomainObjectContainer<SwaggerSource>
, поэтому для добавления нового контейнера мы вызываем create
с его именем в качестве параметра;
3 - Kotlin не так гибок, как Groovy, поэтому вызывает setter вместо поля установки;
4 - Закрытие Groovy далеко от функционального интерфейса, поэтому мы указываем универсальный тип, как в источниках плагина Closure
не параметризован.