栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Gradle 权威指南

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Gradle 权威指南

目录标题
  • 1.Gradle入门
    • 1.Gradle环境配置
    • 2.Gradle Wrapper
    • 3.生成wrapper
    • 4.wrapper配置
    • 5.gradle-wrapper.properties
    • 自定义wrapper task
    • gradle 日志
    • gradle 命令行
  • 2.Groovy基础
    • 2.1 字符串
    • 2.2 集合
    • 2.3 方法
    • 2.4 JavaBean
    • 2.5 闭包
    • DSL 领域特定语言
  • 3.Gradle构建基础
    • 3.1 setting文件
    • 3.2 build.gradle文件
    • 3.3 projects 及Tasks
    • 3.4 创建一个任务
    • 3.5 任务依赖
    • 3.7 自定义属性
  • 4.Gradle 任务
    • 多种方式创建任务
    • 多种方式访问任务
    • 任务分组和描述
    • << 操作符
    • 任务的执行分析
    • 任务排序
    • 任务的启用和禁用
    • 任务的OnlyIf断言
    • 任务规则
  • 5.Gradle 插件
  • 6.java Gradle插件
  • 7.Android Gradle插件
  • 8.自定义Android Gradle工程

1.Gradle入门

Gradle是一个非常优秀的构建系统工具,它的DSL基于Groovy实现。

1.Gradle环境配置 2.Gradle Wrapper

是对gradle的包装,便于团队开发过程中统一Gradle构建的版本。

3.生成wrapper 4.wrapper配置 5.gradle-wrapper.properties
#Fri Jul 23 19:34:22 CST 2021
distributionbase=GRADLE_USER_HOME
//下载gradle的路径
distributionUrl=https://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStorebase=GRADLE_USER_HOME

自定义wrapper task gradle 日志 gradle 命令行 2.Groovy基础

Groovy是基于JVM的一种动态语言,Groovy完全兼容Java,有在此增加很多动态类型和灵活的特性。如 闭包 DSL

2.1 字符串

Groovy不需要分号,单引号和双引号都可以。
单引号没有运算能力,表示常量字符串。双引号可以直接运行表达式计算。

2.2 集合

list set map Queue
list
def numlist = [1,2,3,4] 使用索引访问集合
map
def map = [‘width’:1024,‘height’:768]
println map[‘width’]

2.3 方法
def method(int a,int b){
	println a+b
}
task invokeMethod<<{
	method(1,2)
}

return 可以不写

2.4 JavaBean
class Person{
	private String name
}

task hellJava <<{
	person p = new Person()
	p.name ="lisi"
	println "名字是:${p.name}"
}
2.5 闭包

闭包就是一段代码块

task helloClosure<<{
    customEach{
        print it
    }
}
//closure参数用于接收闭包(代码块)
def customEach(closure){
    for (i in 0..<10) {
        closure(i)
    }
}

传递参数
闭包委托???

DSL 领域特定语言 3.Gradle构建基础 3.1 setting文件

用于初始化及工程树配置。为了配置子工程。
子工程只有在settting文件里配置了才能识别、

3.2 build.gradle文件

每个project都会有一个build.gradle文件,它是project构建入口,配置版本,依赖库,配置插件。
Root Project也可以获取所有child project,比如Java在开发大型项目的时候,会有很多模块,每个模块都是project。

subprojects {
	apply plugin "java"
    repositories {
       		jecenter()
       }
    }
}
3.3 projects 及Tasks

gradle中,可以有很多project,可以定义project生成jar,生成war包,也可以创建project用于上传war文件。一个project又包含多个task。
task是一个操作,一个原子性操作。比如打个jar包,复制一分文件,编译一次Java代码

task xxxx{
    doOne{
        println 'hello'
    }
     
}

3.4 创建一个任务
task customTask1{
    doFirst{
        println "this is task"
    }
    doLast{
    	println "this is last"
    }
}

task是一个关键字,它是project对象的一个函数,原型为create(String name,Closure configureClosure),customTask1是任务的名字;第二个参数是闭包,大括号里的代码。

tasks.create("customTask2"){
    doFirst {
        println "one"
    }
    doLast {
        println "two"
    }
}
3.5 任务依赖

dependsOn是Task类的一个方法,可以接收多个依赖的任务作为参数。

task hello  {
    println "hello"
}
task exMain (dependsOn:hello){
    doLast {
        println "main"
    }
}

还可以依赖多个task

task exMain (){
    dependsOn hello,world
    doLast {
        println "main"
    }
}
3.7 自定义属性 4.Gradle 任务 多种方式创建任务

依赖于project给我们提供的快捷方法及TaskContainner提供的相关Create方法,可以有多种方式来创建任务。

def Task createTask = task(createTask)

createTask.doLast {

    println "hello world"
}

createTask就是任务名字,可以使用.gradlew createTask 来执行这个任务。这种方式的创建其实调用project对象中的task(String name)的方法
第二种方式 以一个任务名字+ 一个对该任务配置的map对象来创建任务。

def Task createTask2 = task(createTask2,group: basePlugin.BUILD_GROUP)

第三种:任务+闭包

task createTask3{
    decription "演示"
    doLast {
        println "this is task + closure style"
    }
}
多种方式访问任务

我们创建的任务都会作为项目(project)的一个属性,属性名就是任务名,可以直接通过该任务名字访问和操作该任务;

其次,任务都是通过TaskContainer创建的,它是我们创建任务的集合,在project中我们通过tasks属性访问TaskContainer.访问的时候,任务名就是key

再则,通过路径访问,一个是get 一个是find,区别为get的时候如果找不到会抛出异常UnknowTaskException。而find找不到返回null。

通过名称访问,也有get 和find 两种,区别和上述一样。

任务分组和描述

任务分组就是分类,便于对任务进行归类整理。任务的描述就是说明这个任务有什么作用。

<< 操作符

<< 操作符在gradle的task是doLast的短标记形式。

任务的执行分析 任务排序 任务的启用和禁用

Task中有个enable属性,用于启用和禁用任务。默认true,表示启用。

任务的OnlyIf断言

断言就是一个条件表达式,Task有一个onlyif方法,接受一个闭包作为参数。如果该闭包返回ture表示任务执行。否则跳过。

任务规则 5.Gradle 插件 6.java Gradle插件 7.Android Gradle插件 8.自定义Android Gradle工程
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号