Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。
1. 安装
1.1. 下载
官网:https://gradle.org/
下载地址:https://gradle.org/releases/
下载:binary-only版本
1.2. 配置环境变量
GRADLE_HOME=C:\java\gradle-7.4
PATH增加%GRADLE_HOME%\bin
验证:
gradle -v
2. 介绍[idea中使用]
idea中使用gradle无需提前配置安装gradle。创建项目的时候,可以选择gradle插件的位置,多种方式:本地配置的gradle或者wrapper方式等。注意gradle的home目录,用于设置本地仓库地址。
gradle项目目录结构:
src
main #正式代码
java #java源码
resources #配置文件
webapp #页面元素,例如:js,css,jpg,html,jsp等。
test #测试代码
java #java源码
resources #配置文件
3. Groovy的语法简单介绍
Idea中使用groovy编辑器:Tools | groovy console打开。
groovy介绍
//groovy介绍
println("你好");
//groovy可以省略末尾分号,也可以省略括号
println "hello"
定义变量,def为弱类型
//定义变量,def为弱类型
def i = 10
println i
集合
//集合
def list = ['a', 'b']
list << 'c' //添加元素
println list.get(2)//取第三个元素
Map定义
//Map定义
def map = ['name': 'zhangsan', 'age': 18]
map.birth = '2012'//添加
println map.get('birth')//获取
闭包:其实就是一段代码块。gradle中主要把闭包当参数使用。
//闭包:其实就是一段代码块。gradle中主要把闭包当参数使用。
//定义闭包
def b1 = {
println 'hello b1'
}
//定义一个方法,接收闭包类型参数
def funb1(Closure closure) {
closure()
}
//调用方法,执行闭包
funb1 b1
//定义带参数闭包
def b2 = {
v -> println "hello b2-${v}"
}
def funb2(Closure closure) {
closure("nomax")
}
funb2 b2
4. gradle文件配置介绍
gradle user home目录:gradle的用户家目录,所有的初始化,缓存,依赖包等放置该目录中。
配置文件:File | Settings | Build, Execution, Deployment | Build Tools | Gradle
配置gradle的仓库使用maven的仓库:
- 先选择maven本地仓库地址,例如:C:\java\apache-maven-3.6.3\repository
- 在环境变量中配置:GRADLE_USER_HOME值为maven本地仓库地址。
/**
* 插件配置
*/
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
/**
* 仓库的配置:jar包检索顺序按照先后进行,如果不存在,则向下找。
* mavenLocal:标识从本地仓库寻找jar包,配置GRADLE_USER_HOME环境变量。
* mavenCentral:标识使用的是中央仓库,此时项目中的使用jar包会从中央仓库下载到本地指定目录[gradle user home]。
*/
repositories {
mavenLocal()
mavenCentral()
}
/**
* gradle工程的依赖管理
* 依赖jar部分:group,name,version三部分
* testCompile:代表jar包在测试环境中起作用,标识jar的作用域。
*/
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
implementation 'cn.hutool:hutool-http:5.7.22'
}
gradle命令:
Tasks-build:构建相关的命令。
jar:打jar包,jar包构建目录:build-libs
dependencies引入jar的作用域介绍:
- implementation: 对于使用了该部分的编译有效,当前项目有效,其他项目如依赖当前项目,其他项目访问使用时无效,即对当前有效,对外部无效。
- api: 相比implementation,该方式不进行隔离。
- compile(已经被废弃):日常编译和打包时有效。
- testCompile: 单元测试代码和打包测试时有效。
- debugCompile: debug模式编译和debug打包时有效。
- releaseCompile: release模式编译和打包时有效。
根据具体官方文档查阅其作用。
5. gradle创建web工程
目录(增加的文件目录):
src/main/webapp/WEB-INF/web.xml文件
build.gradle
/**
* 插件配置
*/
plugins {
id 'java'
id 'war' //打war包
}
6. gradle多模块工程
父工程:new - project
settings.gradle:
通过include包含了子模块的工程。
build.gradle:
allprojects {}子模块工程则可以共用。
插件方式必须使用:apply plugin: "java"
子模块:new - module
build.gradle:
模块自用内容进行配置,共用内容无需配置。
引用其他模块:dependencies中使用:complie project(":模块名称")
插件方式必须使用:apply plugin: "war"