相信使用JAVA的同学都用过Maven,这是一个非常经典好用的项目构建工具 。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服:
- 一来Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文件就会变得非常非常长;
- 二来XML文件不太灵活,假如你需要在构建过程中添加一些自定义逻辑,搞起来非常麻烦;
- 第三就是Maven非常的稳定,但是相对的就是对新版java支持不足,哪怕就是为了编译java11,也需要更新内置的Maven插件 。
文章插图
安装gradle最传统的安装方法就是去gradle官网下载二进制包,解压,然后将路径添加到环境变量中 。如果你没什么其他需求,可以使用这种安装方式 。但是,gradle是一个非常新潮的项目,每隔几个月就会发布一个新版本,这种方式可能跟不上gradle的更新速度 。
所以我更加推荐使用包管理器来安装gradle 。如果你使用linux系统,那么不必多说 。如果你使用windows系统,我推荐使用scoop包管理器来安装gradle 。它安装方便,而且使用SHIM目录来管理环境变量,在各种工具中配置gradle也很方便 。
当然,如果你完全不喜欢安装这么多乱七八糟的东西,那也可以使用gradle 。gradle提供了一个名为gradle wrApper的工具,可以在没有安装gradle的情况下使用gradle 。好吧,其实它就是个脚本文件,当你运行wrapper脚本的时候,如果脚本发现你电脑里没有gradle,就会自动替你下载安装一个 。现在甚至还出现了Maven wrapper,也是个脚本文件,可以自动安装Maven 。
之前相信一些朋友听说过gradle,然后尝试使用它,结果因为速度太慢,最后放弃了 。之前我也因为gradle的速度,放弃了它一段时间 。不过现在使用gradle的话会方便很多 。gradle官方在中国开设了,CDN,使用gradle wrapper的时候下载速度非常快 。可以说现在是一个学习使用gradle的好时候 。
使用gradle wrapper这里我使用的IDEA来创建和使用gradle项目 。
文章插图
在IDEA中创建gradle项目
IDEA默认就会使用gradle wrapper来创建项目,所以无需安装gradle也可以正常运行 。这时候项目结构应该类似下图所示,使用Maven的同学应该比较熟悉,因为这和Maven的项目结构几乎完全一致 。gradle文件夹和gradlew那几个文件就是gradle wrapper的文件,而.gradle后缀名的文件正是gradle的配置文件,对应于Maven的pom.xml 。
文章插图
gradle项目结构
gradle wrapper的优点之一就是可以自定义下载的gradle的版本,如果是团队协作的话,这个功能就非常方便,简单设置即可统一团队的构建工具版本 。这里我就设定成目前最新的gradle 6.4.默认下载安装的是bin版,仅包含二进制 。如果你使用IDEA的话,它会推荐下载all版,包含源代码,这样IDEA就可以分析源代码,提供更加精确的gradle脚本支持 。
文章插图
依赖管理下面来看看gradle的依赖管理功能,这也算是我们使用构建工具的主要目的之一了 。这点也是gradle相较maven的优势之一了 。相较于maven一大串的XML配置,gradle的依赖项仅需一行 。
dependencies {testImplementation 'junit:junit:4.13'implementation 'com.google.code.gson:gson:2.8.6'}
这里推荐一下Jetbrains的package search网站,是寻找maven和gradle依赖包的最佳网站,可以非常轻松的搜索和使用依赖项 。文章插图
package search网站
gradle依赖的粒度控制相较于Maven也更加精细,maven只有compile、provided、test、runtime四种scope,而gradle有以下几种scope:
- implementation,默认的scope 。implementation的作用域会让依赖在编译和运行时均包含在内,但是不会暴露在类库使用者的编译时 。举例,如果我们的类库包含了gson,那么其他人使用我们的类库时,编译时不会出现gson的依赖 。
- api,和implementation类似,都是编译和运行时都可见的依赖 。但是api允许我们将自己类库的依赖暴露给我们类库的使用者 。
- compileOnly和runtimeOnly,这两种顾名思义,一种只在编译时可见,一种只在运行时可见 。而runtimeOnly和Maven的provided比较接近 。
推荐阅读
- 淘宝开店怎么运营 淘宝店铺怎么经营
- 中药茯苓的副作用有哪些呢
- 茶汤漱口的功效,茶的现代功效之防龋作用
- 发展高效白毫茶叶基地,福建省茶叶学会会长到邵武调研茶叶品牌发展情况
- 动感单车音乐推荐
- 儿茶的功效与作用,勐海现代女儿茶的特点
- 茶梅盆景怎么造型好看,宜兴壶古典造型与现代造型
- 心情很郁闷
- 茶叶的有效成分茶多酚,茶的现代功效之减肥功效
- 复式装修设计小技巧