配置与摇篮CODEGEN招摇。如何提供的摇篮脚本工作?

问题描述 投票:1回答:1

我做战在这里验证码:https://github.com/thebignet/swagger-codegen-gradle-plugin-example

试图建立使用扬鞭代码生成和摇篮REST客户端。我是新来的摇篮,看着这个例子是相当混乱,因为有多个变量/属性/名称,我不知道他们来自哪里或他们在做什么。特别是这部分:

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

swagger.output - 在这从何而来?

类,compileJava,swaggerClasses,compileSwaggerJava什么是所有这些的?他们似乎没有在任何地方定义,似乎是随机命名的?

然后自述说:为了生成扬鞭源代码,启动以下任务。 generateApi:生成代码扬鞭

到底在哪被扬鞭和代码来自哪里?

任何澄清我们非常感激,我相信会帮助更多的人。

gradle swagger gradle-plugin swagger-codegen
1个回答
3
投票

要充分认识到这代码,你必须通过Gradle DSL(域特定语言)来读取

甲SourceSet表示Java源代码和资源的逻辑组。块sourceSets {}内,一个新的SourceSet swagger被定义。

在上面的链接SourceSet的定义,你会发现,因为swagger现在是一个SourceSet,它具有性能输出,它提供了这个SourceSet的所有输出目录:因此,你可以调用swagger.output

在每一个摇篮Java项目中,有有主要来源和测试源的假设。假设由java插件,是一个摇篮处理的Java这是需要完成的。 (这种布局从Standard Directory Layout茎)。通过main{}test{}您配置这些源集。您可能有多个源组,当然。什么compileClasspath += swagger.outputruntimeClasspath += swagger.output做,是他们的编译时和运行时路径目录添加招摇生成的代码(或任何一般招摇输出)。由于招摇做代码生成,这是预期的行为。

任务表示用于构建单个原子件的工作,比如编译类或生成Javadoc。

Java插件,上面提到的,创建一个新的SourceSet时,也产生了一些associated taskscompileSourceSetJavaprocessSourceSetResourcessourceSetClasses(每个SourceSet的名称替换SourceSet)。这就是那些compileSwaggerJavaswaggerClasses是,从swagger SourceSet生成的任务。 对于标准sourcesets,那些are: 主sourceset:compileJavaprocessResourcesclasses 和 测试sourceset:compileTestJavaprocessTestResourcestestClasses

任务可能对其他任务的依赖关系,或可能被安排总是层出不穷任务运行。

这是通过任务的properties配置。其中之一,是dependsOn财产这也解释了你提供的代码这最后一块。 (注:在代码的最后块中的generateApi任务,在链路被定义在问题共享OP)

© www.soinside.com 2019 - 2024. All rights reserved.