使用Gradle配置Swagger codegen。提供的Gradle脚本是如何工作的?
我在这里与此代码进行斗争: 尝试使用Swagger codegen和Gradle构建REST客户机。我是Gradle的新手,看这个例子很让人困惑,因为有多个变量/属性/名称,我不知道它们来自何处,也不知道它们是做什么的。特别是这一部分:使用Gradle配置Swagger codegen。提供的Gradle脚本是如何工作的?,gradle,swagger,gradle-plugin,swagger-codegen,Gradle,Swagger,Gradle Plugin,Swagger Codegen,我在这里与此代码进行斗争: 尝试使用Swagger codegen和Gradle构建REST客户机。我是Gradle的新手,看这个例子很让人困惑,因为有多个变量/属性/名称,我不知道它们来自何处,也不知道它们是做什么的。特别是这一部分: clean.doFirst { delete(swaggerOutputDir) } configurations { swagger } sourceSets { swagger { compileClasspath
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
大摇大摆。输出-这是从哪里来的
类,compileJava,swagger类,compileSwaggerJava
这些都是什么?他们似乎没有被定义在任何地方,似乎被随机命名
自述文件说:
要生成Swagger源代码,请启动以下任务。
generateApi:生成招摇过市代码
“招摇过市”和“代码”到底从哪里来
非常感谢您的澄清,我相信这将帮助更多的人。要完全理解此代码,您必须通读(领域特定语言)
- A:
swagger
在以上指向源集定义的链接中,您会注意到,由于swagger
现在是一个源集,因此它有一个属性“output”,它提供此源集的所有输出目录:因此,您可以调用swagger.output
在每个GradleJava项目中,都假设存在主要源和测试源。这个假设是由Gradle处理Java所需的插件引入的。(此标准化布局源于。)您可以通过main{}
和test{}
配置这些源集。当然,您可能有更多的源集。compileClasspath+=swagger.output
和runtimeClasspath+=swagger.output
所做的是在编译时和运行时类路径目录中添加swagger生成的代码(或任何一般的swagger输出)。因为swagger会生成代码,所以这是预期的行为
- 现在,关于:
compileSourceSetJava
、processSourceSetResources
和sourceSetClasses
(用每个源集的名称替换源集)。这就是那些compileSwaggerJava
,swagger类
是从swagger
源集中生成的任务。对于标准源集,这些任务:
主要源集的任务:
compileJava
,processResources
,classes
测试源集的任务:
compileTestJava
,processTestResources
,testClasses
一个任务可能与其他任务有依赖关系,或者可能被安排始终在另一个任务之后运行
这是通过任务的。其中之一是dependsOn
属性,它解释了所提供代码的最后一块。
(注意:最后一块代码中的generateApi任务在问题中OP共享的链接中定义)“clean.doFirst{delete(swaggerOutputDir)}”来自所提供链接中的另一块代码。我建议要么删除它,要么提供整个额外的代码块。(它只是确保输出目录为空,这样您就不会从以前的过程中生成任何源代码)非常感谢tryman!非常好的信息!不过我还是不明白最后一部分。生成API:生成招摇过市代码。我知道generateApi任务是在哪里定义的,但什么是generate和code参数?你能用这个更新你的答案吗?@BorisHamanov我认为任务调用只是“generateApi”部分,其余部分只是解释它所做的是“生成炫耀代码”。如果真是这样的话,它的措辞非常糟糕,我也感到困惑。一年半后,我仍然没有时间测试这个,但我看到这个博客,它似乎只是“generateApi”