目录
-
gradle 是什么
gradle是一种自动化构建工具, 可以用于构建java 、c++、python、android 等项目。
gradle基于Groovy语言的,能自动地执行各种构建任务,如编译代码、 运行测试、打包应用程序等。可以像写java代码一样,我们也可以用gradle去编写构建的脚本,gradle也有对象、接口、函数、参数、变量、继承等这些概念。
-
了解构建是什么
可以将项目的代码从源代码到具体程序文件的过程,称为代码构建。
行为包括:编译、测试、运行、打包、部署的过程
- 编译:主要目的是将开发者使用高级编程语言编写的源代码程序,翻译成计算机能够解读、运行的可执行文件
- 打包: 就是将所有的源代码、配置文件和资源文件等全部压缩到一个文件里,形成一个可执行的部署包。对于java程序,这个部署包一般是jar包或者war包。
- jar包: 简单来说主要用于构建独立的java应用程序或库,其可以直接被JVM加载和使用
-war包:主要用于构建web应用程序,包含了类、资源文件、配置文件、以及前端资源文件 等,需要部署到java web容器(如Tomcat)中才能运行
-
gradle使用教程
接下来以idea 配置和使用gradle构建项目为例。初步了解gradle如何使用。
一个gradle项目的构建主要分为几个模块: build.gradle 、 settings.gradle、 gradle/* ,通过idea创建gradle项目,会自动为我们生成这些文件。
下面继续了解这几个模块的作用:
-
build.gradle
前面有说到,gradle也有接口、对象等这些概念。build.gradle 就是继承接口 org.gradle.api.Project 的一个实例对象,可以通过ctrl+鼠标左键 点击build.gradle 的 dependencies,跳到接口Project , 可以看到里面定义了很多的方法。
-- apply plugin 、 plugins
apply plugin: 'java'
apply plugin: 'idea'
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
声明gradle使用哪些插件, 两者的主要区别是用法,apply plugin是声明单个插件, plugins可声明多个插件。
-- buildscript{}闭包
执行gradle脚本所需要的资源,主要包含maven仓库、第三方插件等
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootStarterVersion}"
}
}
-- repositories{} 闭包
声明使用哪个远程仓库, 和dependencies{}闭包配合使用。 如果dependencies{}里声明了远程依赖包, 则会从这里的远程仓库去下载依赖。
repositories {
maven {
mavenCentral()
}
}
-- congigurations{} 闭包
简单说就是可配置一些东西,来管理 dependencies{} 里的依赖, 如下面配置, 会对dependencies里声明的所有依赖,排除掉logger相关的包
configurations {
// remove default logger
all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
-- ext
是自定义属性, 有些人会把版本信息相关的配置在这里,或者放到另外自己单独新建的properties文件。 如下面配置的一条版本信息, 可以在dependencies{} 声明相关的依赖时引用这个 ${log4j2.version} 来指定版本信息。
ext['log4j2.version'] = '2.17.1'
-- dependencies{}
声明项目运行所需要的依赖, 可以是远程依赖包,或者本地依赖包。如果声明了远程依赖包,则需要在repositories{} 指定远程仓库。
一般使用implementation、api/compile、classpath 这些函数来声明依赖包,具体的区别可以自行再了解。
//本地依赖引用示例
dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
}
dependencies {
Implementation files('libs/your-library-file-name.jar')
}
dependencies {
//远程依赖
implementation "org.springframework.boot:spring-boot-starter-web:${springBootStarterVersion}"
implementation "org.mybatis.spring.boot:mybatis-spring-boot-starter:${mybatisSpringBootStarterVersion}"
-- task{}
可以在build.gradle 中自定义task, 然后通过gradle yourTaskName 命令可以执行这个task。
task getVersion {
print version
}
另外,gradle官方也提供了一些task。 在idea项目右侧的gradle侧边栏,点击打开Tasks可以看到。
-
settings.gradle
是org.gradle.api.initialization.Settings 接口的实例对象。可以声明项目名称,导入代码模块。
如下面声明项目名称为sa_demo, 导入本地模块demo1, 和外部模块demo2。
导入模块后,就可以在build.gradle 添加依赖使用了。
rootProject.name = 'sa_demo'
include 'demo1'
include 'demo2'
project(':demo2').projectDir = file('../demo2')
-
gradle/*
该目录下主要有 gradle-wrapper.properties 这个文件可以进行配置。 主要配置gradle的版本和下载的url地址, 安装目录 GRADLE_USER_HOME等内容
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-
gradle侧边栏
项目的gradle侧边栏, 每个module都有Tasks、Dependencies,
主Module还会多一个Run Configurations。
-- Tasks 是Gradle官方提供的一些原生task
常用的几个task :
build :对整个项目进行彻底的重新编译,只针对更改过的文件进行编译
jar: 打jar包
clean: 清理编译缓存,主要清理build/下面的文件
-- Dependencies 展示了项目的依赖关系
-- Run Configuration 是查看运行配置关系的
参考
官方文档:
Project - Gradle DSL Version 8.5
下载地址: