ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Gradle入门详解

2022-02-25 02:01:27  阅读:212  来源: 互联网

标签:task 依赖 入门 gradlew gradle 详解 构建 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的时候有效

版本冲突问题

  如果你依赖了库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'
    }
}

 

标签:task,依赖,入门,gradlew,gradle,详解,构建,Gradle
来源: https://www.cnblogs.com/CNLayton/p/15927659.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有