在java开发中,我们都会用到一些构建工具,常用的构建工具有Ant、Maven、Gradle。经过这么多年的发展,终于Ant几乎快销声匿迹了,Maven和Gradle在项目开发中用得比较多,其中以Gradle发展得最好。

Maven的主要功能是多模块构建、依赖管理系统、一致的项目结构、一致的项目构建模型和插件机制。在此,我将以这5点来做一个区分。
1.0多模块构建

在现在的项目中,一般我们会将一个项目分解是多个模块。在Maven中需要定义一个parent POM作为一组module的通用配置,我们可以用标签来定义一组子模块
在Gradle也支持多模块构建,在parent的build.gradle中可以使用subprojects和allprojects定义所有的子模块。对于子模块的定义可以放在setting.gradle文件中。
2.0依赖管理系统

在Maven中,可以用GroupID、ArtifactID、Version组成一个唯一的标识。任何Maven项目都必须要定义这三个属性。GroupID相当于package,ArtifactID相当于Class。
Gradle支持动态的版本依赖,在版本号后面使用+号可以实现动态的版本管理。
3.0一致的构建模型

Maven设置了标准的项目周期,包含验证、初始化、生成原始的数据、处理原始数据、生成资源、处理资源、编译、处理类。。。。等等。而Gradle更加的灵活,可以创建一个task,并随时通过depends建立与已有task的依赖关系
4.0一致的项目结构

Maven指定了一套标准的项目结构作为java项目结构,Gradle也是沿用了这套标准。在Gradle中只需在文件中包含applyplugin:'java',系统既可以自动识别
5.0插件机制
两者都采用了插件机制