Gradle Java实践
Gradle使用了一种约定俗成的方法来构建基于JVM的项目,它借用了Apache Maven的一些约定。特别是,它对源文件和资源使用相同的默认目录结构,并与Maven兼容的资源库一起工作。Java中所谓的Plugin就是一个定义了一系列Properties与Tasks的集合。如果希望使用Java plugin,只需要在build.gradle中加入这句话:
Gradle和Maven一样,采用了约定优于配置的方式对Java项目布局,并且布局方式是和Maven一样的,此外,Gradle还可以方便的自定义布局。在Gradle中,一般把这些目录叫做source set:
。
这里要注意,每个plugin的source set可能都不一样。同样的,Java plugin还定义好了一堆task,让我们可以直接使用,比如:clean、test、build等等。这些task都是围绕着Java plugin的构建生命周期的:
图中每一块都是一个task,箭头表示task执行顺序/依赖,比如执行task jar,那么必须先执行task compileJava和task processResources。另外可以看到,Gradle的Java plugin构建生命周期比较复杂,但是也表明了更加灵活,而且,在项目中,一般只使用其中常用的几个:clean test check build等等。
Gradle构建过程中,所有的依赖都表现为配置,比如说系统运行时的依赖是runtime,Gradle里有一个依赖配置叫runtime,那么系统运行时会加载这个依赖配置以及它的相关依赖。这里说的有点绕,可以简单理解依赖和maven类似,只不过Gradle用configuration实现,所以更灵活,有更多选择。下图是依赖配置关系图以及和task调用的关系图:
可以看到,基本和Maven是一样的。其实Gradle里面这些依赖(scope)都是通过configuration来实现的。