Gradle

Posted wyp1988

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle相关的知识,希望对你有一定的参考价值。

  • 概述
    • 类似ant和maven,简单来说是一个构建工具,高级使用的话也可以作为一个基于Groovy语言的编程框架,所有配置其实都是code。
  • 参考
  • 概念
    • Project:每个项目可作为一个Project,对应一组配置文件,有一系列task。
    • Task:每个插件对应会有一系列预定义的task,如bootRun、build之类的。
    • 插件:每个Project可以使用一些插件,比如android的插件、Spring Boot的插件、普通Java的插件,每个插件对应一系列预定义的task,一个Project可以用多个插件。
    • gradle wrapper
      * gradlew和gradlew.bat是生成的gradle wrapper在Linux和Windows上的脚本,使用它们就可以统一大家用的gradle版本了,而且不用安装gradle
      * 这里的gradlew和gradlew.bat其实只是脚本文件(前者用于Unix/Linux/Mac,后者用于Windows),在使用gradle命令的地方替换为gradlew或gradlew.bat,他们将自动下载指定的gradle版本,然后用该版本进行项目构建。
      * 可以使用gradlew taskname
  • 工作流程
    • 首先是初始化阶段。对我们前面的multi-project build而言,就是执行settings.gradle
    • Initiliazation phase的下一个阶段是Configration阶段。
    • Configration阶段的目标是解析每个project中的build.gradle。比如multi-project build例子中,解析每个子目录中的build.gradle。在这两个阶段之间,我们可以加一些定制化的Hook。这当然是通过API来添加的。
    • Configuration阶段完了后,整个build的project以及内部的Task关系就确定了。恩?前面说过,一个Project包含很多Task,每个Task之间有依赖关系。Configuration会建立一个有向图来描述Task之间的依赖关系。所以,我们可以添加一个HOOK,即当Task关系图建立好后,执行一些操作。
    • 最后一个阶段就是执行任务了。当然,任务执行完后,我们还可以加Hook。
  • 使用命令
    • 可以在project目录下使用gradle taskname来执行某个task,即使是bootRun也可以
    • gradle tasks查看任务信息
    • gradle projects查看工程信息
  • 配置文件
    • gradlew和gradlew.bat:如前面所述
    • settings.gradle
      • 多项目时,父目录会有一个settings.gradle文件
        • 可以通过rootProject.name = ‘xxx‘设置根项目的名称
        • 可以通过include ‘yyy‘ project(‘:yyy‘) projectDir = new File(settingsDir, ‘../../shared/yyy‘)指定有哪些子项目
    • build.gradle
      • 定义group和version:group = ‘com.xxx.yyy‘ version = ‘0.0.1-SNAPSHOT‘
      • 指定使用什么插件,可以有多个,如apply plugin: ‘org.springframework.boot‘
      • ext用于定义变量?
      • 指定依赖项:
dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-hateoas')
        compile('org.springframework.boot:spring-boot-starter-cache')
    compile('org.springframework.cloud:spring-cloud-cloudfoundry-connector')
        compile  project(':XXXCommon')
        compile  project(':SwaggerSupport')
    
    compileOnly('org.projectlombok:lombok')
    
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.testng:testng:6.8')
}

以上是关于Gradle的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

如何添加jcenter仓库 gradle依赖

如何防止Android studio格式化build.gradle

谷歌地图不显示在片段中

Gradle 导出属性不适用于 Spring 中的 gradle bootRun

错误:这个片段内部类应该是静态的 [ValidFragment]