基本介绍、常用指令、项目目录、项目应用
Groovy语法、整合IDEA、搭建web工程、项目部署
生命周期、钩子函数、项目发布、配置文件、Project与Task、Gradle插件
整合SSM多模块、微服务实战
Ant:2000年Apache推出的纯Java编写构建工具,通过xml build.xml文件管理项目
优点:使用灵活,速度快(快于gradle和maven),
缺点:At没有强加任何编码约定的项目目录结构,开发人员需编写繁杂XL文件构建指令对开发人员是一个
挑战。
Maven: 2004年Apache组织推出的再次使用xml文件pom.xml虹管理项目的构建工具.
优点:遵循一套约定大于配置的项目目录结构,使用统一的GAV坐标进行依赖管理,侧重于包管理。
缺点:项目构建过程僵化.配置文件编写不够灵活、不方便自定义组件构建速度慢于d!e,
Gradle:2012年Google推出的基于Groovy语言的全新项目构建工具,集合了Ant和Maven各自的优势。
优点:集Ant脚本的灵活性+Mavn约定大于配置的项目目录优势,支持多种远程仓库和插件,侧重于大项目
构建。
缺点:学习成本高、资料少、脚本灵活、版本兼容性差等。


allprojects {
repositories {
mavenLocal()
maven {name "Alibaba" ; url 'https://maven.aliyun.com/repository/public'}
maven {name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/"}
mavenCentral()
}
buildscript {
repositories {
maven {name "alibaba"; url :"https://maven.aliyun.com/repository/public "}
maven {name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/"}
maven {name "M2" ; url "https://plugins.gradle.org/m2/"}
}
}
| 常用gradle指令 | 作用 |
|---|---|
| gradle clean | 清空build目录 |
| gradle classes | 编译业务代码和配置文件 |
| gradle test | 编译测试代码,生成测试报告 |
| gradle build | 构建项目 |
| gradle build -x test | 跳过测试构建项目 |
注意:gradle的指令要在含有build.gradle的目录执行。
init.gradle可以在编译启动前执行这个脚本,比如配置上镜像地址
有几种方式使用init.gradle呢
1. 在命令行指定文件,例如: gradle --init-script yourdir/init.gradle -q taskName.你可以多次输入此命
令来指定多个init文件
3. 把init.gradle文件放到USER_HOME/,gradle/目录下
4. 把以.gradle结尾的文件放到USER_HOME/.gradle/init.d/目录下
5. 把以.gradle结尾的文件放到GRADLE_HOME/init.d目录下
如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个
init脚本,会按拼音a-z顺序执行这些脚本,每个nit脚本都存在一个对应的adle实例,你在这个文件中调用的
所有方法和属性,都会委托给这个gradle实例,每个init脚本都实现了Seript接口。
仓库地址说明:
mavenLocal():指定使用本地maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。
maven {url位置},指定maven仓库,一般用私有仓库地址或其他第三方库。比如阿里云镜像地址
mavenCentral() 这是Maven的中央仓库,无需配置,直接声明就可以使用。
jcenter(): Jcenter中央仓库,实际也是用的maven搭建,但相比Maven仓库更友好,通过cdn分发,并且支持https访问,在新版本中已经废弃,替换为了mavenCentral()
总之,gradle可以通过指定仓库地址为本地maven仓库地址和远程仓库地址相结合的方式,避免每次都会去远程仓库下载依赖库·这种方式也有一定的问题,如果本地maven仓库有这个依赖,就会从直接加载本地依赖,如果本地仓库没有该依赖,那么还是会从远程下载·但是下载的jar不是存储在本地naven仓库中,而是放在自己的缓存目录中,默认在USER_HOME/.gradle/caches目录,当然如果我们配置过GRADLE_USER_HOME环境变量,则会放在GRADLE_USER_HOME/caches目录,那么可不可以将gradle caches指向maven repository。我们说这是不行的,caches下载文件不是按照maven仓库中存放的方式·
阿里云开发者镜像查询地址:https://developer.aliyun.com/mvn/guide
Gradle Wrapper实际上就是对Gradle的一层包装,用于解快实际开发中可能会遇到的不同的项目需要不同版本的Gradle问题。例如:把自己的代码共享给其他人使用,可能出现如下情况:
- 对方电脑上没有安装gradle
- 对方电脑上安装了gradle,但是版本太旧了
这时候,我们就可以考虑使用Gradle Wrapper了。这也是官方建议使用Gradle Wrapper的原因。实际上有了Gradle Wrapper之后,我们本地是可以不配置Gradle的,下载Gradle项目后,使用gade项目自带的wrapper操作也是可以的。
项目中的gradlew gradlew.cmd脚本用的就是wrapper中规定的gradle版本·参见源码
而我们上面提到的g红adle指令用的是本地gradle, 所以gradle指令和gradlew指令所使用的gradle版本有可能是不一样的
gradlew gadlew.cmd的使用方式与gradle使用方式完全一致,只不过把g红adle指令换成了gradlew指令。
当然我们也可在终端执行gradlew指令时,指定指定一些参数,来控制Wrapper的生成,比如依赖的版本等,如下:
| 参数 | 说明 |
|---|---|
| –gradle-version | 用于指定使用的gradle版本 |
| –gradle-distribution-url | 用于指定下载gradle发行版url地址 |
执行gradle wrapper --gradle-version=7.4.2 --gradle-distribution-url=地址
下载别人的项目或者使用操作以前自己写的不同版本的gradle项目时:用Gradle wrapper,也即gradew
什么时候使用本地gradle?新建一个项目时:使用gradle指令即可。
在某种程度上,Groovy可以被视为Java的一种脚本化改良版,Groovy也是运行在JVM上,它可以很好地与Java代码
及其相关库进行交互操作。它是一种成熟的面向对象编程语言,既可以面向对象编程,又可以用作纯粹的脚本语言。
大多数有效的Java代码也可以转换为有效的Groovy代码,Groovy和Java语言的主要区别是:完成同样的任务所需的
Groovy代码比Java代码更少。其特点为:
> 功能强大,例如提供了动态类型转换、闭包和元编程(metaprogramming)支持
> 支持函数式编程,不需要main函数
> 默认导入常用的包
> 类不支持default作用域,且默认作用域为public。
> Groovy中基本类型也是对象,可以直接调用对象的方法。
> 支持DSL(Domain Specific Languages领域特定语言)和其它简洁的语法,让代码变得易于阅读和维护。
> Groovy是基于Java语言的,所以完全兼容Java语法,所以对于Java程序员学习成本较低。
详细了解参考官网. 官网地址http://www.groovy-lang.org/documentation.html
Task "task1" {
println "弟弟你真好"
doFirst {
println "弟弟身材真好"
}
doLast {
println "弟弟的腰 杀人的刀"
}
}
Task "Task2" {
doLast {
println "姐姐喜欢细狗"
}
}
Task2.dependsOn=['task1']
任务执行: gradle taskName, eg: gradle -i c 执行任务c
重复依赖的任务只执行一次