目录
安装
安装过程:https://gradle.org/install/
需要有jdk环境,jdk8以上,java -version
验证。兼容性:https://docs.gradle.org/7.6.1/userguide/compatibility.html
手动安装
安装完整版,包含doc和sources,下载安装包:https://gradle.org/releases/ ,gradle-7.6.1-all.zip,解压到D盘
将bin目录配置到系统环境变量path中,gradle -v
验证安装成功
其他:
- 使用
gradle wrapper
升级 - 命令行补全
用户手册:https://docs.gradle.org/7.6.1/userguide/userguide.html
介绍
Gradle是开源的自动构建工具,聚焦于灵活性和性能。Gradle脚本是使用Groovy或者Kotlin DSL写的。Gradle features:https://gradle.org/features/
- 高可定制化:Gradle的建模方式以最基本的方式进行自定义和扩展
- 快:完成任务快,通过重复利用前一个执行的输出、只处理变化的输入、并行执行
- 强大:Gradle是Android的官方构建工具,并且支持许多流行的语言和技术
与maven的比较:https://gradle.org/maven-vs-gradle/
使用现有的Gradle builds:开发工具、Gradle命令行接口、Gradle Build Scan https://scans.gradle.com/
Gradle是什么
一个开源的自动化构建工具,足够灵活来构建任何类型的软件,Gradle只做少许的假设,关于你试图构建或如何构建,这让Gradle非常的灵活。
Gradle基于以下基本原则进行设计:
- 高性能:避免不必要的工作,仅仅执行由于输出输出变化而必要的一些任务,使用各种缓存
- JVM基础:Gradle运行与JVM之上,对于熟悉java的是一件好事,因为构建逻辑可以使用标准的java api,也利于在不同平台上运行Gradle
- Conventions:常见的项目类型很容易通过常规构建,插件集默认让构建脚本最小化,但是这些常规并不会限制你:你可以通过配置、添加自己的task、及做其他的定制化
- 扩展性:大多数构建都需要特殊的构建逻辑,你可以轻而易举的扩展Gradle来提供自己的构建逻辑
- IDE支持:idea、vscode等
- Insight:Build Scan提供构建过程中更详细的信息
术语:
- Projects:是Gradle要构建的东西,它包含一个构建脚本,一般是
build.gradle
,在项目的根目录下,构建脚本对project定义了tasks, dependencies, plugins, and other configuration。一次构建可以包含一个或多个project,一个project可以包含自己的subproject - Tasks:task包含执行工作的逻辑,编译代码、运行测试、部署软件,大多数情况下,一般使用已有的task,Gradle提供了大多数构建系统需要的task,比如java的单元测试,plugins提供了更多类型的任务。
- task由以下组成:
- actions:一部分动作,比如拷贝文件、编译代码
- input:action需要的值、文件、目录
- outputs:action修改或生成的文件或目录
- Plugins:plugin允许引入新的概念,不仅仅是task、文件、依赖、配置,比如大多数语言插件都添加的source set的概念到构建中。插件提供了复用的逻辑和配置在跨项目时,通过插件,你可以写一次在多个构建中使用。或者你可以在一个地方存储普通的配置,比如日志、依赖、版本管理。这减少了构建脚本中的重复。通过插件合适的建模构建过程可以很大的提高易用性和效率。
- Build Phases:Gradle计算和执行构建脚本在三个阶段
- Initialization:为构建建立环境,并且确定哪个项目参与
- Configuration:为build创建和配置任务图,基于用户想要执行的任务,确定哪些任务需要执行,以及执行顺序
- Execution:执行Configuration阶段被选中的任务
- Builds:build是Gradle项目中一系列任务的一次执行,通过命令行接口执行或者通过ide指定任务选择器执行,Gradle配置这次build并且选择任务进行执行。Gradle基于请求的任务和他们的依赖执行最小的任务集合
快速开始
如果你只是想运行一个存在的Gradle项目,并且项目里有gradle warpper,那么不需要安装Gradle,也即是在根目录下有gradlew
或者gradlew.bat
,只需要满足前置需求即可(有jdk)。
要创建一个新的build或者添加wrapper到存在的build去,需要安装Gradle
尝试使用Gradle:
- buidling java application:
- 创建一个目录,名称为项目名
- 进入目录,执行
执行gradle init
- 选择application、java、groovy,其他默认即可
- buidling java library
案例 构建java应用
目录说明:
- gradle目录:放wrapper文件的地方
- gradlew和gradlew.bat:是Gradle wrapper的启动脚本
- settings.gradle:这个build的名称和子项目配置文件
- app/build.gradle:是子项目app的构建脚本
- app/src:项目源码
settings.gradle:
rootProject.name = 'gradle-helloworld-java-app' //定义这个build的名字 建议使用固定的名字 因为目录名称可能会变
include('app') //定义这个build包含的子项目app 其中app里包含实际的代码和构建逻辑 如果有多个子项目可以再添加include('subproject2')
app/build.gradle:
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application' //配置插件application
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral() //配置中央仓库
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' //配置测试依赖
// This dependency is used by the application.
implementation 'com.google.guava:guava:31.1-jre' //配置运行时依赖
}
application {
// Define the main class for the application.
mainClass = 'org.example.App' //定义主类
}
tasks.named('test') {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
运行这个应用:gradlew run
,第一次执行脚本会下载这个版本的gradle到~/.gradle/wrapper/dists
目录下
打包应用:gradlew build
,application插件会打包应用及其依赖
使用idea,可以配置使用本地安装的gradle。
- 默认gradle下载依赖到
C:\Users\用户名\.gradle\caches\modules-2\files-2.1
下,可以配置环境变量GRADULE_USER_HOME
修改这个目录 - 在gradle安装目录下init.d下添加脚本,指定下载源,其中mavenLocal()需要配置maven安装目录的环境变量
M2_HOME
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"}
}
}
}
标签:Reference,gradle,构建,build,https,org,Gradle
From: https://www.cnblogs.com/bingmous/p/18101593