Gradle入门详解

简述

  Gradle是一种自动化构建工具,在同领域的产品有Ant和Maven。Gradle可以用Groovy或Kotlin编写的DSL来帮助我们构建。

构建

  构建就是把代码文件转化为可在计算机独立运行的软件制品的过程,以java为例,构建分为:编译和打包的操作

  如果人工进行构建的话需要用到javac、jar等命令,且构建过程比较繁琐,也容易出错,这时就需要自动化构建工具帮我们进行自动构建

Demo

  下面将演示用gradle来从零开始构建项目,我们创建好项目之后可以在命令行中使用 gradle init 命令来初始化项目,然后可以进行相应的选项

  选择哪种语言来编写DSL,一般选Groovy

 

  选择哪种测试框架,这里选JUnit5也就是4选项

 

   填写好项目名和包名后,gradle就完成了项目的初始化生成

  使用 gradle build 命令即可完成一次项目构建

Gradle Wrapper

  我们来考虑下面两个问题:

    1.如何保证大家本地安装的Gradle版本的一致性?

    2.服务器端构建,分配到的服务器没有安装Gradle,如何进行构建?

  Gradle Wrapper则是用来解决上面两个问题的方案——把gradle装进盒子里,这个盒子就是wrapper

  当你需要某个版本的gradle的时候,gradle wrapper就会去gradle的官方服务器下载对应版本

  

  在项目的gradle-wrapper.properties配置文件我们可以看到,gradle的远程下载地址,以及本地的存放地址(前两行的地址拼接)

  这样通过配置文件配置gradle就解决了上面两个问题,我们把这个配置文件push到仓库,同事拉去下来也就制定好了gradle的版本,同时如果机子没有gradle的话会自动去下载

Task

  在gradle中task就是一系列的操作任务,例如我们有如下五种常见的task

clean 清理构建产物(./gradlew clean)
build 执行构建(./gradlew build)
test 运行测试(./gradlew test)
tasks 查看所有tasks(./gradlew tasks)
help 查看帮助信息(./gradlew help --task build)

  task的执行也是有依赖的,即一个大的task会有几个小的task构成

  

  使用./gradlew xxx --dry-run命令即可查看名字为xxx的task命令的构成

  如果./gradlew build -x test

依赖管理

  在build.gradle文件里我们可以进行项目的依赖管理,我们只需往dependencies里添加我们需要的类库的坐标即可

  需要注意的是坐标前的关键字不同会产生不同的效果

api 能访问依赖库所依赖的库的方法
implementation 依赖的库只能自己库本身访问,举个例子,A依赖B,B依赖C,如果B依赖C是使用的implementation依赖,那么在A中是访问不到C中的方法的
compileOnly 只在编译的时候有效, 不参与打包
runtimeOnly 只在打包的时候有效,编译不参与
testImplementation 在单元测试和打包测试apk的时候有效

  可以在https://mvnrepository.com/查询你想使用的组件依赖

版本冲突问题

  如果你依赖了库A的1.0版本,又依赖了库B,这个库B依赖了库A的2.0版本,此时就发生了版本冲突问题

  1.我们可以手动去除冲突的依赖,在冲突的库选一个进行exclue

implementation ('com.carlos.test:Test:1.0.0') {
    exclude group: "io.reactivex.rxjava2",module: "rxjava"
    // exclude group: "io.reactivex.rxjava2:rxjava:2.1.11"
}
implementation 'io.reactivex.rxjava2:rxjava:2.1.13'

  2.我们可以强制使用某版本依赖

configurations.all {
    resolutionStrategy {
        force 'io.reactivex.rxjava2:rxjava:2.1.13'
    }
}

 

posted @ 2022-02-25 01:38  艾尔夏尔-Layton  阅读(2615)  评论(0编辑  收藏  举报