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

用Gradle配置Swagger码元。提供的Gradle脚本是如何工作的?

水昊阳
2023-03-14

我正在与以下代码进行斗争:https://github.com/thebignet/swagger-codegen-gradle-plugin-example

尝试使用Swagger codegen和Gradle构建一个REST客户端。我是Gradle的新手,看这个例子很困惑,因为有多个变量/属性/名称,我不知道它们来自哪里或它们做什么。尤其是这一部分:

clean.doFirst {
    delete(swaggerOutputDir)
}

configurations {
    swagger
}

sourceSets {
    swagger {
        compileClasspath = configurations.swaggerCompile
        java {
            srcDir file("${project.buildDir.path}/swagger/src/main/java")
        }
    }
    main {
        compileClasspath += swagger.output
        runtimeClasspath += swagger.output
    }
    test {
        compileClasspath += swagger.output
        runtimeClasspath += swagger.output
    }
}

compileSwaggerJava.dependsOn generateApi
classes.dependsOn swaggerClasses
compileJava.dependsOn compileSwaggerJava

大摇大摆。输出--这是从哪里来的?

共有1个答案

王才
2023-03-14

为了完全理解这段代码,您必须通读Gradle DSL(领域特定语言)

  • 源集:

SourceSet表示Java源和资源的逻辑组。

    null

上面提到的java插件在创建新的SourceSet时还创建一些相关的任务:compilesourcesetjavaprocesssourcesetresourcessourcesetclasses(用每个SourceSet的名称替换SourceSet)。这就是那些compileswaggerJavaswaggerClassesswagger源集生成的任务。
对于标准源集,这些任务是:
主源集的任务:compileJavaprocessResourcesclasses
测试源集的任务

一个任务可能依赖于其他任务,或者可能被安排始终在另一个任务之后运行。

这是通过任务的属性配置的。其中之一是Dependson属性,它解释了提供的代码的最后一个块。(注意:最后一段代码中的generateApi任务是在问题中共享的OP链接中定义的)

 类似资料:
  • 如何从gradle运行另一个gradle脚本。我有多个gradle脚本在

  • 我正在尝试编译简单的Kotlin Gradle脚本。我已经用build创建了一个Idea项目。格拉德尔。kts包含以下内容: 它的灵感来自gradle/kotlin-dsl存储库中的复制示例,它既没有从IDE编译,也没有从终端中的gradlew编译。它给了我这些错误: 也许我缺少某种插件来包含?我该怎么做?

  • 还有中的块控制新的插件方法,我尝试定义块并添加,但它不起作用。 简而言之,使用DSL添加的插件是如何工作的,哪个块告诉从哪里找到插件,然后哪一行告诉在类路径中添加它。 更新:对于ex,repositories中的maven块-buildscript部分告诉您在位置和依赖项中的classpath标签下查看插件-buildscript告诉您将此依赖项添加到应用程序类路径中 更正:

  • 我是新手。我的应用程序是一个spring boot应用程序。消费者在协议代理中创建了协议。现在我正在尝试从providers端运行测试,我正在使用gradle插件来运行测试。我有几个问题: > 使用者发布 协议没有指定任何状态。这意味着我不需要在提供者端使用任何stateChangeUrl? 我想实现的是:当我说pactVerify 服务器启动,我的Spring Boot应用程序应该在localh

  • 基本上我想这样做: 使用其他gradle文件中的Gradle函数 也就是说,在一个gradle脚本中从另一个调用一个函数。问题是我的build.gradle是静态编程语言(build.gradle.kts),我的函数所在的脚本仍然是groovy。 我遵循了groovy到groovy的上述链接,但我无法使用Kotlin DSL实现这一点。 在我的groovy文件中,函数。gradle,我有: 和 然

  • 我正在用IntelliJ中的简单hello world应用程序试用gradle脚本kotlin。但是IntelliJ自动完成不会在构建中弹出。格拉德尔。kts文件。 https://github.com/gradle/gradle-script-kotlin/tree/master/samples/hello-world 建筑格拉德尔。kts: 设置。格拉德尔: 我有IntelliJ kotlin