官方文档
https://docs.gradle.org/current/userguide/userguide.html
概念
Gradle安装
android编译工具,最初有直接用makefile编译的,后来也有使用ant编译的,不过目前大家几乎都使用gradle作为编译工具了。
ant,使用xml配置来编译工程,xml不够灵活,程序员当然觉得写代码控制编译流程最灵活,而不是写配置文件,比如要条件判断,ant就有点别扭。
makefile能够进行一系列有限度的编码,但无法灵活管理第三方库,比如要引用glide,makefile就不适合了。
所以gradle是目前的主流,它使用groovy语言,groovy文件会被编译成class文件,groovy本质上也是java,gradle通过编程的方式,能更灵活地控制编译过程,方便自定义,也可以很方便地引入第三方库,基于这些原因,gradle自然就是android工程构建的倚天剑了
gradle中有几个重要的概念,先了解下:
project,一个gradle.build文件就对应着一个projecttask,project包含了多个task,task中又会有多个action,比如doLast、doFirst等,执行task,就是执行其中的actionplugin,plugin中定义了相应动作,在构建时会自动地执行其中的动作。可以理解为plugin中定义了相应个task,构建的时候一定会执行plugin中的taskextension,主工程中gradle文件里添加的android{}语句块就是一个extension,设置相应属性,供plugin读取使用
在编译过程中, Gradle 会根据 build 相关文件,聚合所有的project和task,执行task 中的 action。因为 build.gradle文件中的task非常多,先执行哪个后执行那个需要一种逻辑来保证。这种逻辑就是依赖逻辑,几乎所有的Task 都需要依赖其他 task 来执行,没有被依赖的task 会首先被执行。所以到最后所有的 Task 会构成一个 有向无环图(DAG Directed Acyclic Graph)的数据结构。
编译过程分为三个阶段:
- 初始化阶段,创建project对象
- 配置阶段,执行所有的gradle脚本,创建所有task,所有task的配置代码会在这个阶段执行
- 执行阶段,执行task
我所了解的就是,安卓应用和需要自己管理jar包的应用,以及在打包的时候做一些特殊的处理等,除此之外大部分都还是使用Maven
下载地址
https://gradle.org/
环境变量配置
将下载下来的压缩包解压,这里以d盘为例,解压之后的路径为D:\gradle-7.3-bin\gradle-7.3,打开windows设置,搜索系统环境变量 添加GRADLE_HOME 填写完毕后点击确定
选中path,点击编辑 点击新建 输入%GRADLE_HOME%\bin
然后一直确定即可
验证是否安装成功
打开cmd,输入gradle -v ,输出如下内容则说明安装成功
Gradle配置
指定Gradle依赖下载位置
配置之后Gradle会将依赖包默认下载到该目录,在环境变量新建一个系统环境变量,注意变量名必须为GRADLE_USER_HOME,目录最好不要有中文和特殊符号
配置Gradle查找jar包优先级
在Gradle解压缩的文件夹中找到init.d文件夹,在init.d目录下新建一个init.gradle文件,内容如下
allprojects {
repositories {
maven { url 'file:E:\\gradleRepo'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
mavenCentral()
}
}
allprojects里是项目本身需要的依赖。表示项目里面每个build.gradle 里面的库都会依赖用这些仓库。这里配置了四个仓库,表示先会去E盘的gradleRepo目录下找,没找到就去本地Maven仓库找,还没有就去阿里云的仓库找,最后就去Maven的中心仓库找。
注意: mavenLocal去找的本地的maven仓库地址是C:\USER_HOME\.m2/settings.xml 没有可以自己创建 ,把自己Maven配置文件复制一份在这里就行
IDEA创建Gradle工程
创建Gradle项目和配置
打开IDEA,选择file->new 配置工程 选择本地的Gradle,以及Gradle的仓库,然后点击apply,ok 完成后目录结构如下: 然后我们创建一个gradle.demo 包在创建一个GradleDemo 类,添加一个main方法
添加依赖
然后我们修改build.gradle,在dependencies中增加
implementation ‘com.alibaba:fastjson:1.2.73’
修改之后我们点击刷新,就会自动导入对应的依赖到项目里 注意:低版本的Gradle需要将implementation替换成compile
完整的build.gradle
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
implementation 'com.alibaba:fastjson:1.2.73'
}
test {
useJUnitPlatform()
}
编辑GradleDemo.java,这里我们只是输出一下json字符串验证下工程
package gradle.demo;
public class GradleDemo {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("age",14);
String jsonString = JSONObject.toJSONString(map);
System.out.println(jsonString);
}
}
运行结果如下:
打包成可运行的jar包
编辑build.gradle,添加打包插件
jar{
manifest{
attributes 'Main-Class': 'gradle.demo.GradleDemo'
}
from{
configurations.runtimeClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
然后在根目录执行命令 gradle jar 就在build/libs目录得到一个可以运行的jar包
报错解决
Java home is different.Expecting: but was: ‘jre‘.Please configure the JDK to match the expected one 解决办法: 在你自己的JDK\JRE\lib中把tools.jar文件删除 (注意备份)然后重新创建项目就好了
点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
如有侵权,请私信联系我
感谢,配合,希望我的努力对你有帮助^_^
|