Gradle入门详解

Gradle入门详解简述Gradle是一种自动化构建工具,在同领域的产品有Ant和Maven。Gradle可以用Groovy或Kotlin编写的DSL来帮助我们构建。构建构建就是把代码文件转化为可在计算机独立运行的软件制品的过程,以java为例,构建分为:编译和打包的操作如果人工进行构建的话需要用到javac、

大家好,欢迎来到IT知识分享网。

简述

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

构建

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

Gradle入门详解

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

Demo

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

Gradle入门详解

Gradle入门详解

Gradle入门详解

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

 Gradle入门详解

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

 Gradle入门详解

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

Gradle入门详解

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

Gradle Wrapper

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

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

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

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

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

  Gradle入门详解

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

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构成

  Gradle入门详解

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

  如果./gradlew build -x test

依赖管理

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

Gradle入门详解

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

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'
    }
}

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/34386.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信