gradle入门教程

article/2025/10/6 6:11:28

一、gradle安装及配置

1、下载及安装
去gradle官网下载对应gradle安装包。首页点击“Install Gradle”,对应页面的“Installing manually”下点击download,选择对应版本下载即可。有Binary-only和Complete两种。Complete是带了文档的。然后解压到任意目录即可
在这里插入图片描述
2、环境变量配置。
与java环境变量配置类似:
1、配置GRADLE_HOME。
2、添加到path中:%GRADLE_HOME%\bin。
3、cmd中输入gradle -v 校验。
需要先安装好java环境。

二、gradle简介

1、Groovy简介

gradle是基于groovy的,其 build 脚本使用 groovy dsl 编写。Groovy是用于Java虚拟机的一种敏捷的动态语言,是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用于编写脚本。与Java的区别:
(1)兼容java语法
(2)分号非必输
(3)类、方法、默认public
(4)编译器给属性自动添加getter/setter方法
(5)属性可以用点获得
(6)最后一个表达式的值会作为返回值,可以不用写return
(7)==等同于equals(),所以即使有对象为空,也不会有空指针异常
groovy的几个高效特性(以下代码可以在IntelliJ IDEA的groovy console中运行):
(1)高效的类型定义

def version=1 //这里version就是int类型,类似JavaScript里的var

(2)assert断言语句可以在任何地方执行。
(3)括号是可选的

println(version)  
println version    //这两种写法效果是相同的

(4)字符串

def s1='groovy'    //普通字符串
def s2="gradle version is ${version}"   //可以加参数的字符串
def s3='''my name
is groovy'''    //可以换行println s1
println s2
println s3

(5)集合

//List
def buildTools=['ant','maven']
buildTools <<'gradle'
println buildTools.getClass()==ArrayList
println buildTools.size()==3//map
def buildYears=['ant':2000,'maven':2004]
buildYears.gradle=2009
println buildYears.ant
println buildYears.gradle
println buildYears.getClass()   //输出位:class java.util.LinkedHashMap

(6)闭包

//闭包相当于一个代码块,可以被赋值给一个变量,也可以作为参数传递给方法
//c1,c2分别为带参数的闭包和不带参数的闭包
def c1 ={v1 ->println v1
}
def c2={println 'groovy'
}
//methon1和methon2的参数为闭包,Closure需要引用groovy自带的类,不要引用java的类
def methon1(Closure closure){closure('gradle')
}
def methon2(Closure closure){closure()
}methon1(c1)
methon2(c2)

2、gradle构建基础

Projects 和 tasks
projects 和 tasks是 Gradle 中最重要的两个概念。

任何一个 Gradle 构建都是由一个或多个 projects 组成。每个 project 包括许多可构建组成部分。 这完全取决于你要构建些什么。举个例子,每个 project 或许是一个 jar 包或者一个 web 应用,它也可以是一个由许多其他项目中产生的 jar 构成的 zip 压缩包。一个 project 不必描述它只能进行构建操作。它也可以部署你的应用或搭建你的环境。不要担心它像听上去的那样庞大。 Gradle 的 build-by-convention 可以让您来具体定义一个 project 到底该做什么。
每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。
到目前为止,可以发现我们可以在一个 project 中定义一些简单任务,后续章节将会阐述多项目构建和多项目多任务的内容。
在这里插入图片描述
简单的gradle项目解析
使用eclipse或者IDEA创建gradle项目后,会自动创建build.gradle和settings.gradle两个脚本文件。
目录结构和maven类似:
在这里插入图片描述
gradle 任务窗口:
在这里插入图片描述
build.gradle脚本解析:

group 'org.springframework'  //项目组名
version '1.0-SNOPSHOT'    //版本号apply plugin: "java"   //引用java插件  新版本可能是这种写法 plugins { id 'java'}
apply plugin: "war"   //用来打war包
sourceCompatibility=1.8    //java版本//仓库管理
repositories{mavenCentral()
}//依赖管理
dependencies{testCompile group: 'junit', name: 'junit', version: '4.12'
}

自定义任务
我们可以在build.gradle中自定义我们自己的任务,可以在gradle视图的tasks下的others下看到我们自己的任务。

//创建项目资源路径
//闭包
def createDir = {path ->File dir = new File(path)if(!dir.exists()){dir.mkdirs();}
}task makeJavaDir(){def paths=['src/main/java','src/main/resources','src/test/java','src/test/resources']//任务的动作,doFirst任务开始时执行,doLast任务结尾执行。<<操作符时doLast的简写形式。//一个动作可以多次调用doFirst {paths.forEach(createDir)}
}task makeWebDir(){//dependsOn是task的方法,表示此任务依赖其他的任务,此任务执行前,依赖的任务需要先执行dependsOn 'makeJavaDir'def paths=['src/main/webapp']doLast {paths.forEach(createDir)}
}

依赖管理

//仓库管理
repositories{google()   //谷歌仓库mavenLocal() //本地的maven仓库mavenCentral() //maven的中央仓库jcenter()    //Goovy Grape内的默认仓库maven{   //maven私服url  ''}
}
示例:
repositories {mavenLocal()maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}mavenCentral()jcenter()maven { url "https://repo.spring.io/snapshot" }maven { url "https://repo.spring.io/milestone" }maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' } 
}//依赖管理 testCompile表示再测试代码编译阶段依赖这个包
//可以去maven的中央仓库去找我们需要的jar包 https://mvnrepository.com/repos/central
//每个包都会有会有gradle对应的依赖写法,复制到我们项目中即可
dependencies{testCompile group: 'junit', name: 'junit', version: '4.12'
}

在这里插入图片描述
解决冲突
gradle会自动帮我们解决jar包的版本冲突,默认使用最高的那个版本,我们也可以手动解决冲突。

//修改默认解决策略来查看Gradle之间哪些包出现版本冲突
configurations.all{resolutionStrategy{failOnVersionConflict()force 'org.slf4j:slf4j-api:1.7.24'}
}//方法一 排除冲突的依赖包
dependencies {compile('org.hibernate:hibernate-core:3.6.3.Final') {exclude group:"org.slf4j",module:"slf4j-api"  //排除了hibernate堆slf4j的依赖}testCompile group: 'junit', name: 'junit', version: '4.12'compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}//方法二 强制指定版本
configurations.all{resolutionStrategy{failOnVersionConflict()force 'org.slf4j:slf4j-api:1.7.24' //强制指定了版本}
}

多项目构建
上文我们说过gradle项目包含build.gradle和settings.gradle两个脚本文件,上面介绍了build.gradle,现在介绍一下settings.gradle。settings.gradle是多项目构建下管理项目和子项目的
settings.gradle

rootProject.name = 'groovy'  //根模块名
include 'groovyweb'   //子模块

在进行多项目构建的时候,我们需要在根项目下的build.gradle配置所以项目相同的配置,在子项目的build.gradle下配置子项目的个性化需求。示例:假设有根项目、java模块子项目、web模块子项目,web模块子项目需要引用java模块子项目。则,根项目的配置:

//所有项目的配置
allprojects {apply plugin :'java'sourceCompatibility = 1.8
}
//子项目的配置
subprojects {repositories {mavenCentral()}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'}
}

web模块子项目配置:

apply plugin :'war'
dependencies {compile project(':javaproject')
}

至于group和version 我们可以创建一个名为gradle.properties的文件,然后配置。

group ='com.dmf.gradle'
version ='1.0-SNAPSHOT'

gradle测试
项目布局
在这里插入图片描述
build\reports\tests目录下就是网页版的测试结果。
测试配置(引入测试框架,编写测试代码):

dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'}

gradle在build时就会发现测试类。编译并且执行。
在这里插入图片描述

发布
在公司里,我们需要把项目发布到私服上,供其他同事下载或使用时,就需要使用发布功能了

//引入插件
apply plugin: 'maven-publish'publishing {publications {myPublish(MavenPublication){from components.java}}repositories{maven{name ''url ''}}
}

gradle参考资料
1、https://www.w3cschool.cn/gradle/
2、https://www.jianshu.com/p/001abe1d8e95


http://chatgpt.dhexx.cn/article/qpFBPgTR.shtml

相关文章

Gradle 学习 ----Gradle 入门

1 、Gradle入门 Gradle入门 1 、Gradle入门1. 1 、Gradle简介1. 2 、常见的项目构建工具1. 3 、Gradle安装1. 3. 1 、Gradle安装说明1. 3. 2 、安装JDK1. 3. 4 、配置环境变量1. 3. 5 、检测是否安装成功1. 4 、Gradle项目目录结构1. 5 、Gradle创建第一个项目扩展:命令创建项目…

找不到适合自己的工作很迷茫怎么办?

有些人在求职的过程中&#xff0c;可能会遇到这样的情况&#xff1a;发offer的公司自己不想去&#xff0c;想去的公司又不愿意给自己一个机会&#xff0c;努力了很久但一直找不到合适的工作。这个时候&#xff0c;如果继续每天在家无所事事的话&#xff0c;很可能会越想越多&am…

找不到合适的工作怎么办

这是我在分答上收到的几个问题&#xff1a; 我刚刚为了一份喜欢的工作放弃了别人介绍的工作&#xff0c;是不是很冲动&#xff1f;职业上经常讲匹配度&#xff0c;但是在现实中为什么匹配度很难落地呢&#xff1f;你越不想要的&#xff0c;他越出现&#xff0c;你想要的&#x…

时局不利,如何化解职场焦虑?

部分数据来源&#xff1a;ChatGPT 在不景气的经济环境下&#xff0c;大多数求职者都面临极大的压力&#xff0c;而技术人员又是其中之一。他们不仅需要不断学习新技能&#xff0c;还需要面对工作市场的竞争&#xff0c;并努力将自己的技能提升到所需的水平。一旦被拒绝或无法找…

工作琐事太多怎么办_待办的事情太多,如何有条不紊的进行工作呢?

【子亦观点】:事情太多难以理清是很多人都遇到的问题,协调不好就会出现混乱的状态和低效的结果,更甚者会因此产生焦虑情绪。所以必须掌握科学合理的管理方法,并有效运用到工作和生活中,减轻压力和负担。 什么原因导致处理事务容易混乱? 1.总是被突发事件打断 当你坐到电脑…

找不着工作怎么办?以下六条一定要听我说。

找不着工作怎么办&#xff1f; 如果今年找不到工作&#xff0c;以下六条一定要听我说。 第一条呢&#xff0c;今年找不着工作可能跟你的能力没有太大的关系。所以不要沮丧&#xff0c;为什么&#xff1f;因为今年大环境非常糟糕&#xff0c;大厂动不动裁员。1/3还在继续裁。你…

如果一份工作让你时常感到焦虑,你会不会立马辞职?

点击上面↑「爱开发」关注我们 每晚10点&#xff0c;捕获技术思考和创业资源洞察 优越感可以让我们变得更自信&#xff0c;能适当有效缓解职场焦虑症&#xff0c;因为一个有成就感的人的内心通常会充满力量&#xff0c;正能量满满。 如果一份工作让你时常感到焦虑&#xff0c;你…

找不到工作怎么办,多半是“废了”,按这3步你也能找到工作

第一步&#xff0c;掂量自己 我们先算一下自己有几斤几两&#xff0c;看看自己的适合什么位置&#xff0c;避免做到自大或者是贬低自己&#xff0c;那么我们的工作中就能做的比较顺利。 掂量自己也是对自己的总结&#xff0c;在总结中我们就可以知道自己的红点和黑点&#xf…

常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...

在职场上&#xff0c;你永远想不到什么样的员工会被优化&#xff0c;比如下面这位&#xff1a; 常年不卷&#xff0c;按时下班&#xff0c;工作很专业&#xff0c;同事问什么都回答&#xff0c;不扯皮&#xff0c;不拉帮结派&#xff0c;简直是职场清流。在上个月竟然被优化了&…

职场中,如何让“讨厌的人”配合自己工作?

在职场上&#xff0c;我们总会遇到那么几个不愿意配合你工作的人&#xff0c;不仅不配合&#xff0c;甚至还喜欢扯皮&#xff0c;推卸责任&#xff0c;甩锅给自己的队友。然而&#xff0c;我们也不可能因为工作中出现了这样一个或几个人&#xff0c;就离职不干&#xff0c;或者…

如何在工作中保持稳定的情绪? – 个人看法和建议

文章目录 每日一句正能量前言情绪波动的原因建议情绪调节技巧和策略身处逆境&#xff0c;如何治愈自己 后记 每日一句正能量 所谓的快乐&#xff0c;是指身体的无痛苦和灵魂的无纷扰。——伊壁鸠鲁 前言 在工作中保持稳定的情绪对于每一个职场人来说都是非常重要的。随着工作压…

失业找不到工作,很焦虑怎么办?

前言 最近经常看到很多人在上海找工作已经找到自我怀疑了&#xff0c;甚至把自己身上的积蓄都花光了&#xff0c;还没找到工作。 以后失业是常态&#xff0c;失业的速度也会加速。 很多人在职业生涯中都会面试失业、找工作。 目前由于求职者过多&#xff0c;就业机会少出现…

程序员保持天天快乐的6个习惯

忍不住感叹&#xff0c;我第一次对Buffer&#xff08;在社交媒体上发布最简单的方式&#xff09;有所想法已经差不多是两年前的事了。并且&#xff0c;在我有想法的一年半前&#xff0c;我还在前面那家新创公司工作的时候&#xff0c;我注意到在创立公司的时候各种模式都有&…

工作中遇到挫折是常态,怎么化解才是关键

杰瑞 提问&#xff1a; 明哥好&#xff0c;想请教一下关于保持心态的问题。在职场中经常会遇到不顺心的事&#xff1a;上下级矛盾、被客户惹恼、项目进展达不到预期等等&#xff0c;见过心态爆炸直接破口大骂的&#xff0c;见过一言不发硬着头皮坚持埋头干的&#xff0c;也见过…

RHCSA作业

第三天 1.修改主机名: 查看主机名 2.查看日期 使用指定格式输出日期 YY-mm-DD HH:MM:SS 3.将"We are learning RHCSA"输出在屏幕上 4.使用timedatectl查看时间状态 列出所有已知时区 修改时区为列出时区的某一个 5.使用wget命令在https://www.pearvideo.com/这个网站…

RHCSA实战

一. 配置网络设置 1.主机名&#xff1a;node1.domain250.example.com hostnamectl set-hostname node1.domain250.example.com 2.IP 地址&#xff1a;172.25.250.100 3.子网掩码&#xff1a;255.255.255.0 4.网关&#xff1a;172.25.250.254 5.DNS服务器&#xff1a;172.25…

RHCSA考试

考试说明 考试时有套注册系统,需要填写自己的信息,全英文, 名字时证书上的名字 Timimg_Lee 邮箱 用 qq 邮箱,建议用 真实系统密码不能进入超级用户 有自己的一套管理系统 Rebuild exam 不要点。 其他信息 您的机器时 example.com 域的一个成员。Example.com 域的所有系统在 17…

rhcsa8学习和模拟考试

rhcsa8学习 物理机foundationX&#xff1a;172.25.254.X/24 使用kiosk/redhat 登录。root/Asimov 所有虚拟机除了classroom之外&#xff0c;都可以登录&#xff0c;root/redhat student/student。 在物理机foundationX上控制虚拟机&#xff0c;命令如下&#xff1a; rht-vmc…

RHCSA环境配置简单命令

一、RHCSA环境搭建 【搭建环境的方式为&#xff1a;在windows上安装Vmware workstation虚拟机&#xff0c;然后在虚拟机的上安装redhat8.0的操作系统。提前准备好所需的环境&#xff1a;①redhat8.x镜像&#xff1b;②Vmware workstation虚拟机&#xff1b;③远程连接工具: 虚…

RHCSA——介绍以及安装配置

ZY目录 Linux操作系统讲解&#xff1a;RHCSA一、引入Linux操作系统1、操作系统2、Linux的发展史3、为什么要学Linux4、Linux的特点5、认识RHCSA 二、安装Linux操作系统 Linux操作系统讲解&#xff1a; Linux所有命令&#xff08;日更&#xff09; 1、红帽Linux安装配置讲解 2、…