我做战在这里验证码: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 DSL(域特定语言)来读取
甲SourceSet表示Java源代码和资源的逻辑组。块sourceSets {}内,一个新的SourceSet
swagger
被定义。
在上面的链接SourceSet的定义,你会发现,因为swagger
现在是一个SourceSet,它具有性能输出,它提供了这个SourceSet的所有输出目录:因此,你可以调用swagger.output
在每一个摇篮Java项目中,有有主要来源和测试源的假设。假设由java
插件,是一个摇篮处理的Java这是需要完成的。 (这种布局从Standard Directory Layout茎)。通过main{}
和test{}
您配置这些源集。您可能有多个源组,当然。什么compileClasspath += swagger.output
和runtimeClasspath += swagger.output
做,是他们的编译时和运行时路径目录添加招摇生成的代码(或任何一般招摇输出)。由于招摇做代码生成,这是预期的行为。
任务表示用于构建单个原子件的工作,比如编译类或生成Javadoc。
Java插件,上面提到的,创建一个新的SourceSet时,也产生了一些associated tasks:compileSourceSetJava
,processSourceSetResources
和sourceSetClasses
(每个SourceSet的名称替换SourceSet)。这就是那些compileSwaggerJava
,swaggerClasses
是,从swagger
SourceSet生成的任务。
对于标准sourcesets,那些are:
主sourceset:compileJava
,processResources
,classes
和
测试sourceset:compileTestJava
,processTestResources
,testClasses
任务可能对其他任务的依赖关系,或可能被安排总是层出不穷任务运行。
这是通过任务的properties配置。其中之一,是dependsOn
财产这也解释了你提供的代码这最后一块。 (注:在代码的最后块中的generateApi任务,在链路被定义在问题共享OP)