Gradle背景:
Gradle简介:
Gradle安装配置:
Gradle详解:
创建Gradle项目:
项目结构解析:
├─build.gradle ①
├─gradlew ②
├─gradlew.bat ③
├─settings.gradle ④
├─gradle ⑤
│ └─wrapper
│ ├─ gradle-wrapper.jar
│ ├─ gradle-wrapper.properties
└─src ⑥
├─main
└─test
build.gradle基础结构:
/******** 普通程序 gradle init初始化 ******/
plugins {
// Apply the java plugin to add support for Java
id 'java'
...
}
repositories {
// Use jcenter for resolving dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
implementation 'com.google.guava:guava:27.1-jre'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2'
}
application {
mainClassName = 'first.init.App'
}
test {
useJUnitPlatform()
}
/******** SpringBoot 项目基础配置 ******/
plugins {
id 'org.springframework.boot' version '2.6.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.it235'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
JCenter相比mavenCenter构件更多,性能也更好。但还是有些构件仅存在mavenCenter中。
IDE使用Gradle:
# distributionBase和distributionPath是配合使用,指定gradle解压后的存放位置
# GRADLE_USER_HOME表示用户目录,
# windows系统:c:\window\<user-name>\.gradle\
# linux是$HOME/.gradle
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# 指定某个版本gradle下载地址
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
# zipStoreBase和zipStorePath配合使用,指定下载gradle.zip存放位置;
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Groovy简介:
推荐下载3.0版本,下载后建议放到C盘的C:\Program Files\groovy\目录下,并配置GROOVY_HOME和Path即可
Groovy详解:
Project简介:
属性:
group = 'com.it235'
version = '1.0.0'
//groovy定义属性
def pname = "projectName:" + project.name
//java类型接收
String pname = "projectName:" + project.name
ext.prop1 = "it"
ext.prop2 = "编程"
属性名 | 描述 |
---|---|
allprojects | 包含此项目及其子项目的集合。 |
buildDir | 当前项目的编译目录(自动生成)默认值 porjectDir/build |
defaultTasks | 当前项目的默认任务的名字集,当前构建没有提供任务名时会执行这些默认任务 |
group | 当前项目的组名 |
logger | 当前项目的日志器,可以用来在 build 文件中写日志 |
name | 此项目的名称 |
parent | 此项目的父项目 |
path | 这个项目的绝对路径 |
project | 当前project对象实例 |
rootDir | 本项目的根目录。根目录是根项目的项目目录 |
rootProject | 当前项目层次结构中的根project |
subprojects | 当前项目的子项目的集合 |
tasks | 本项目的task集合。 |
version | 此项目的版本 |
方法:
方法 | 描述 |
---|---|
afterEvaluate | 可以添加一个闭包,它会在项目完成评估后立即执行。当执行属于该项目的构建文件时,会通知此类监听器。 |
allprojects | 配置当前项目以及它的每个子项目 |
apply | 应用零个或多个插件或脚本。 |
beforeEvaluate | 添加一个闭包,它会在项目开始评估前立即执行 |
configure | 通过闭包配置对象集合。 |
copy | 复制指定的文件 |
defaultTasks | 设置此项目的默认任务的名称。当开始构建时没有提供任务名称时使用这些。 |
delete | 删除文件和目录 |
exec | 执行外部命令 |
file | 解析相对于该项目的项目目录的文件路径 |
findProject | 按路径定位项目。如果路径是相对的,则相对于该项目进行解释。 |
findProperty | 找特定属性,如果未找到,则返回给定属性的值或 null |
getAllTasks | 返回此项目中包含的任务的地图 |
hasProperty | 确定此项目是否具有给定的属性 |
javaexec | 执行 Java 主类 |
javaexec | 执行外部 Java 进程。 |
mkdir | 创建一个目录并返回一个指向它的文件。 |
property | 返回给定属性的值。此方法定位属性如下: |
setProperty | 设置此项目的属性。此方法在以下位置搜索具有给定名称的属性,并将该属性设置在它找到该属性的第一个位置。 |
subprojects | 配置本项目的子项目 |
task | 创建Task具有给定名称的 a 并将其添加到此项目中 |
uri | 将文件路径解析为 URI,相对于该项目的项目目录 |
任务简介:
插件简介:
生命周期:
完整的build.gradle:
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: "war"
//声明
apply plugin: "com.jfrog.bintray"
apply plugin: 'org.akhikhl.gretty' //gradle + jetty 服务器tomcat
/**
* buildscript {} 是构建工具Gradle自身所需要的资源,并不是给我们应用所使用,可以声明maven库和插件依赖
* 如:这个区块里包含gradle-plugin的依赖,因为这个插件包含了Gradle构建APP模块所需要的附加命令。
*/
buildscript {
/**
* repositories {} 区域配置Gradle用来下载依赖的仓库地址。
* Gradle内置支持的远程仓库有JCenter、Maven Central 和 Ivy,4.1版本开始内置支持google()。
* 也可以使用本地仓库或者配置我们自己的远程仓库地址。
* 下面代码示例Gradle使用JCenter作为查找依赖库的代码仓库。
*/
repositories {
maven {url "https://maven.aliyun.com/repository/public"}
jcenter()
}
/**
* dependencies {} 区域配置了Gradle编译APP工程所需要的依赖。
* 下面代码展示路径依赖3.1.0版本gradle-plugin
*/
dependencies {
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0"
classpath 'org.akhikhl.gretty:gretty:+'
}
}
//只允许buildscript 和 pluginManagement在它前面
plugins {
//核心插件,gradle提供
id 'java'
id 'eclipse'
id 'war'
//非核心插件(社区插件),必须通过id+version的方式进行约束
id 'com.bmuschko.docker-remote-api' version '6.7.0'
id 'com.jfrog.bintray' version '1.8.5'
}
//gav 坐标
group 'com.it235'
version '1.0.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8
/**
* allprojects {} 区域可以配置工程中所有模块都用到的代码仓库和依赖,如,三方插件或者库。
* 如果是一个单体项目可以无需使用allprojects闭包,,直接将repositories写在根节点下
*/
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
google()
jcenter()
}
}
/**
* subprojects {} 区域可以配置工程中所有子模块所使用的代码仓库和依赖,如,三方插件或者库。
* 与allprojects相对应,使用场景较少
*/
subprojects {
repositories {
jcenter()
}
}
test{
useJUnitPlatform()
}
task cleanx() {
println "Hello Gradle"
//Groovy语法,Gradle正真强大的地方,太灵活,所以上手的成本非常高,这也是为什么别人说比Maven好的地方,Maven XML扩展能力太差了
}
Gradle目录与Idea配置:
(配置Gradle工作目录)
。您可以选择以下选项之一:’gradle-wrapper.properties’ file:
这是使用Gradle包装器的推荐默认选项。在这种情况下,您可以将Gradle版本的更新委派给Gradle并自动下载该版本的Gradle。 此选项还允许您使用精确的Gradle版本进行构建。 Gradle版本保存在项目的gradle目录中的gradle-wrapper.properties文件中,可帮助您消除任何Gradle版本问题。’wrapper’ task in Gradle build script:
选择此选项可根据包装器任务配置来配置Gradle包装器。 如果您希望控制在项目中使用哪个Gradle版本,可能会很方便。如果使用默认的Gradle包装器选项,然后切换到Gradle包装器任务配置,则您在任务中所做的更改将在项目导入期间自动更新。Specified location:
如果您不想使用Gradle包装器,而是希望手动下载并使用特定的Gradle版本,请选择此选项。 指定您的Gradle安装位置。配置Gradle用户家目录
:Gradle默认使用C:\Users\Administrator.gradle作为Gradle仓库目录用于存储全局配置属性和初始化脚本以及缓存和日志文件。可以新建一个目录也可以指定为Maven的本地目录。
在命令行中输入的以gradlew的开头的命令会使用GRADLE_USER_HOME指定环境变量所在位置来存放下载的gradle。
譬如gradle构建任务的按钮或者是Enable-AutoImport按钮时会使用Gradle user home指定的目录下载project/gradle/gradle-wrapper.properties指定的gradle版本。