Maven Gradle 比较
maven VS gradle
假如还没有依赖管理工具,我们要自己设计一个,如何入手?
1.要有一种依赖库的命名规则,或者叫坐标
2.要有对应的配置文件规则,来描述依赖
3.要有中心仓库来保存这些依赖库,供使用方拉取
4.要有一个本地工具去解析这个配置文件,实现依赖的拉取
Maven
- Maven 诞生于2004年,习惯通过 groupId、artifactId、version 来定义坐标,通过 XML 做配置文件,提供了中心仓库和本地工具(mvn).
- Maven 的依赖提供了 exclude 配置机制,用于阻断部分库的传递依赖。
- Maven 并没有将自己单纯的定义为依赖管理工具,而是项目管理工具,它将项目的整个生命周期都囊括进去了。
- Maven 的核心思想: Convention Over Configuration
- Maven 引入了module 的概念,同一个项目下可以有多个 module,每个 module 有单独的 pom 文件来定义,但为了避免重复,Maven 的 pom 文件支持 parent 机制,子项目的 pom 文件继承 parent pom 的基本配置。
Maven 多项目版本管理的最佳实践:
1.父项目中配置版本号,子项目中不显式配置版本号,继承父项目版本号。
2.子项目之间的依赖通过${project.version}引用,不要明确配置版本号。
3.发布新版的时候,同时发布所有子项目,即便是该子项目未做变更。
4.最好通过Maven的release插件发布,避免手动修改版本号导致的不一致问题。
- 其他语言:Ruby-gem, Ruby-bundler, Python-pip, Node-npm, IOS-CocoaPods
Gradle
- Gradle 对 Maven 的改进:
配置文件: xml -> dsl语言