Gradle | 简介

作者: 不一样的卡梅利多 | 来源:发表于2020-05-09 15:13 被阅读0次

简介

Gradle 是一个支持多语言的构建工具,并且可以与大多数IDE 集成
使用并发和缓存机制构建,使得效率较高。

参考资料

使用方式

1、使用 gradle
通用 Gradle 二进制 压缩包下载解压配置环境变量,也可以使用软件仓库安装 例如 brew install gradle

2、使用 gradle wrapper
gradle wrapper 的命令为 gradlew,gradlew 会依据gradle-wrapper.properties 配置的gradle 版本来构建项目,当配置的gradle 版本不存在,会自动安装。gradle wrapper 一般和项目文件一起使用 (如下图),并且添加到版本管理中,使得开发项目的gradle 构建版本一致。


gradle wrapper.png

gradle-wrapper.properties 配置

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

3、gradle 与gradlew 区别

  • gradlew 会调用 gradle-wrapper.properties 配置的gradle版本进行项目构建。如果配置的gradle 版本不存在,会自动下载

  • gradlew 调用 gradle 进行项目构建

  • gradlew 命令与 gradle 命名可以替换使用,区别是他们使用的gradle 版本依据配置可能不一样

4、IDEA 导入 gradle 项目
File —>new —> project from exists source —>gradle —finish
idea 构建成功后,会自动设置sourceSet ,module。如果module,sourceSet 没有自动设置,可能是由于编译或者构建失败

相关文件与配置

1、gradle 安装目录
含有gradle.properties ,bin/gradle 执行文件

2、用户目录 (USER_HOME/.gradle)


USER_HOME/.gradle.png

1、该目录为gradle wrapper 下载 gradle 安装目录
2、gradle.properties 为属性配置文件
3、init.gradle 为初始化配置文件,比如仓库镜像全局配置。

init.gradle 替换国内仓库,如果没有该文件,可以新建到这个位置

allprojects {
    repositories {
        def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
        def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
        def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
        def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                    remove repo
                }
                if (url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                    remove repo
                }
                if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
                    remove repo
                }
                if (url.startsWith('https://plugins.gradle.org/m2/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
                    remove repo
                }
            }
        }
        maven { url ALIYUN_REPOSITORY_URL }
        maven { url ALIYUN_JCENTER_URL }
        maven { url ALIYUN_GOOGLE_URL }
        maven { url ALIYUN_GRADLE_PLUGIN_URL }
    }
}

3、项目目录


project.png

1、含有gradle wrapper 相关文件 gradle/wrapper ,gradlew(gradlew.bat)
2、含有项目构建配置Script ,setting.gradle,build.gradle

4、属性配置与脚本配置
属性配置

  • 环境变量
  • gradle.properties :用户目录,项目目录,安装目录
  • gradle 读取所有配置,并且合并配置

Script 配置

  • initScript :init.gradle (用户目录) ,接口来源 Gradle +Script
  • buildScript : build.gralde(项目目录),接口来源Project +Script
  • settingScript :setting.gradle , 接口来源 Settings+Script

Repositories

1、支持类型ivy,maven,flat
2、默认maven 仓库
mavenCentral()
jcenter()
google()
mavenLocal() 本地缓存USER_HOME/.m2
自定义仓库地址

    maven {
                    url "https://maven.springframework.org/release"
        }

3、自定义过滤支持
由于可以使用groovy 脚本,可以轻松实现一些 过滤,排除依赖这样的定义

命令

语法

 gradle [taskName...] [--option-name...]

taskName 说明

1、多个名称是空格隔开,在多项目中,task 需要添加项目前缀 ,例如 :mySubproject:taskName
2、task 具有依赖关系,比如下图执行 gradle dist ,那么compile ,compileTest,test task 都会执行 ,可以使用-x 排除任务


Tasks.png

3、task来源 :

  • 内置通用 build,run,check,clean,projects,tasks,dependencies,
  • 插件定义task 比如: java ,groovy
  • 脚本定义 :task taskName {}

option-name说明
1、用=赋值 --console=plain
2、开关选项 --build-cache,--no-build-cache

更多
1、命令手册
2、自动补全

插件

插件提供默认行为的一系列功能(Task)
例如Java 插件:构建Java 项目

Tasks:
compileJava
compileTestJava
processResources
jar
javadoc
test
uploadArchives
clean
cleanTaskName
....

使用 script 配置

 plugins {
        id 'java'
}

插件详情

相关文章

  • Gradle

    目录 1)Gradle简介2)Android中的gradle 2.1)gradle文件 2.2)gradle wr...

  • Gradle简介

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Gro...

  • Gradle简介

    https://docs.gradle.org/current/userguide/userguide.html ...

  • Gradle简介

    一、介绍Gradle是一款构建工具。构建工具做的事情:1.依赖管理2.测试、打包、发布3.尽量机器干活,不自己动手...

  • Gradle | 简介

    简介 Gradle 是一个支持多语言的构建工具,并且可以与大多数IDE 集成使用并发和缓存机制构建,使得效率较高。...

  • Gradle 简介

    什么是 Gradle? Gradle 是一个基于 JVM的富有突破性构建工具,在语法上是基于Groovy语言的(G...

  • Gradle系列(三):项目实践

    Gradle系列(一):Groovy基础Gradle系列(二):AndroidStudio的Gradle简介Gra...

  • Gradle系列(一):Groovy基础

    Gradle系列(一):Groovy基础Gradle系列(二):AndroidStudio的Gradle简介Gra...

  • Gradle系列(二):AndroidStudio的Gradle

    Gradle系列(一):Groovy基础Gradle系列(二):AndroidStudio的Gradle简介Gra...

  • Maven Wrapper简介

    Maven Wrapper简介 简介 开发java项目少不了要用到maven或者gradle,对比gradle而言...

网友评论

    本文标题:Gradle | 简介

    本文链接:https://www.haomeiwen.com/subject/osjknhtx.html