之前写过一篇文章:spring boot rest接口自动生成文档(包含swagger),这个使用的是maven作为依赖管理工具,现在,让我们体验一下gradle在spring boot项目中如何配置的:
插件配置:
plugins {
id 'io.franzbecker.gradle-lombok' version '1.13'
id "com.webcohesion.enunciate" version "2.10.1"
}
一般情况下lombok插件和enunciate一起使用,为了让lombok的类也能在此插件下生成文档,我们还必须配置一gradle脚本所需要的插件下(此插件官方提供了新的支持见https://github.com/stoicflame/enunciate/wiki/Lombok):
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath 'com.webcohesion.enunciate:enunciate-lombok:2.10.1'
}
为了编译的时候,自动生成文档,且服务启动时,作为静态网页访问,我们还需要配置一下生成的文档路径:
tasks.enunciate {
File enunciateDistDir = file("src/main/resources/static/docs/api")
doFirst {
project.delete("build/enunciate")
enunciateDistDir.deleteDir()
enunciateDistDir.mkdirs()
}
export("docs", enunciateDistDir)
}
assemble {
doFirst {
enunciate.execute()
}
}
此任务:
tasks.enunciate {
File enunciateDistDir = file("src/main/resources/static/docs/api")
doFirst {
project.delete("build/enunciate")
enunciateDistDir.deleteDir()
enunciateDistDir.mkdirs()
}
export("docs", enunciateDistDir)
}
是为了把文档copy到spring boot约定的目录下。
此任务:
assemble {
doFirst {
enunciate.execute()
}
}
是为了gradle build 的时候自动执行自动文档copy任务。
就这么简单,和maven插件一样,用起来也都很方便。
具体例子:见https://github.com/sdcuike/gradle-learning/tree/enunciate文档自动生成-集成lombok
注意:为了让文档生成的更好,我们建议多使用java doc写文档,方法参数和返回值,要用具体的类型或泛型,这样生成的文档才具有实用价值,如果你的java知识还停留在java支持泛型以前,可能参数或者返回值大多是Object类型或map类型,这样,对于会造成代码的可读性会大大降低,而且文档自动生成,也没什么意义。