如何制作 gradle 任务取决于 springdoc-openapi-gradle-plugin 中的"generateOpenApiDocs"任务(使用 Kotlin DSL)?



我对gradle很陌生,我想自动化以下任务:

  • 从SpringBoot应用程序生成openapi.json文件(使用springdoc openapi gradle插件(
  • 然后使用此生成的文件创建客户端SDK(使用Gradle Swagger Generator插件(

我的build.gradle.kts是这样的:

plugin{
id("org.springframework.boot") version "2.7.4"
id("io.spring.dependency-management") version "1.0.14.RELEASE"
//springdoc-openapi-gradle-plugin
id("org.springdoc.openapi-gradle-plugin") version "1.4.0"
//https://github.com/int128/gradle-swagger-generator-plugin
id("org.hidetake.swagger.generator") version "2.19.2"
...
}
repositories {
mavenCentral()
}
dependencies{
swaggerCodegen("org.openapitools:openapi-generator-cli:3.3.4")
...
}
swaggerSources {
register("petstore") {
setInputFile(file("${buildDir}/openapi.json"))
code.language = "typescript-fetch"
}
}
// ---!!! the following makes my gradle script fail !!!---
tasks.named("generateSwaggerCodePetstore"){
dependsOn(tasks.generateOpenApiDocs)
}

我的问题是,当我想运行任何渐变任务时,我得到的输出是:

FAILURE:生成失败,出现异常。

  • 其中:生成文件'[…]/Build.gradle.kts'行:153

  • 哪里出了问题:在根项目"getmad"中找不到名为"generateOpenApiDocs"的任务。

如果我从构建脚本中删除以下代码。。。

tasks.named("generateSwaggerCodePetstore"){
dependsOn(tasks.generateOpenApiDocs)
}

我可以很容易地运行这些命令:
$ ./gradlew clean generateOpenApiDocs
然后:
$ ./gradlew generateSwaggerCode
但不知何故,我无法链接这些命令,也无法在构建脚本中编写这些任务之间的程序依赖关系
我有一个单一等级的项目(还没有子项目(。

有人能解决我的问题吗?

任务generateOpenApiDocs尚未配置,因此您不能仅通过tasks的属性访问它。你必须通过其他方式访问它:

tasks.named("generateSwaggerCodePetstore") {
dependsOn(tasks.named("generateOpenApiDocs"))
}

订单如下:

$ ./gradlew generateSwaggerCodePetstore --dry-run
:app:compileJava SKIPPED
:app:processResources SKIPPED
:app:classes SKIPPED
:app:bootRunMainClassName SKIPPED
:app:forkedSpringBootRun SKIPPED
:app:generateOpenApiDocs SKIPPED
:app:forkedSpringBootStop SKIPPED
:app:generateSwaggerCodePetstore SKIPPED
BUILD SUCCESSFUL in 3s

最新更新