Gradle Task相关知识点

1.gradle是什么

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL。面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。
它可以在你的构建脚本里构建任何你想要实现的东西.

2.gradle有哪些功能

gradle对多工程的构建支持很出色,工程依赖是gradle的第一功能。
gradle支持局部构建。
支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs
gradle是第一个构建集成工具,与ant、maven、ivy有良好的相容相关性。
轻松迁移:gradle适用于任何结构的工程,你可以在同一个开发平台平行构建原工程和gradle工程。通常要求写相关测试,以保证开发的插件的相似性,这种迁移可以减少破坏性,尽可能的可靠。这也是重构的最佳实践。
gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。
免费开源
一种可切换的,像maven一样的基于约定的构建框架,却又从不锁住你(约定优于配置)
强大的支持多工程的构建
强大的依赖管理(基于Apache Ivy),提供最大的便利去构建你的工程
全力支持已有的Maven或者Ivy仓库基础建设
支持传递性依赖管理,在不需要远程仓库和pom.xml和ivy配置文件的前提下
基于groovy脚本构建,其build脚本使用groovy语言编写
具有广泛的领域模型支持你的构建

3.gradle基础知识

1.定义一个task任务

task hello{
    // 每次构建都会执行的逻辑
    println '开始hellow'

    // 任务执行结束时的逻辑-闭包
    doLast {
        println('hello')
        String someString = 'mY_nAmE'
        println "Original: " + someString
        println "Upper case: " + someString.toUpperCase()
        // 迭代器
        4.times { print "$it " }
        println ""

        println "Greetings from the $hello.name task."

        // 定义一个属性
        ext.myProperty = "myValue"
        println hello.myProperty
    }
}

2.命令行中一次调用多个任务

例如 gradle compile test 命令会依次调用 compile 和 test 任务, 它们所依赖的任务也会被调用. 这些任务只会被调用一次

3.gradle任务中有一个任务失败会停止构建

4.Gradle任务名可以简化

5.列出项目中所有任务

gradle -q tasks --all

6.gradle任务分组设置和描述信息

当鼠标放到任务上时会显示提示内容,这些任务名称也可以使用中文,更便于理解

task hello{
    description = 'Builds the distribution'
    group = 'build'
}

查看任务描述信息的Path、Type、Description

gradle -q help --task xxx

7.Gradle获取项目属性列表

gradle -q app:properties

8.Project 对象的一些标准的属性

Name Type Default Value
project Project Project 实例对象
name String 项目目录的名称
path String 项目的绝对路径
description String 项目描述
projectDir File 包含构建脚本的目录
build File projectDir/build
group Object 未具体说明
version Object 未具体说明
ant AntBuilder Ant实例对象

9.当入参是最后一个参数时可以采用闭包的形式

repositories {
    println "in a closure"
}
repositories() { println "in a closure" }
repositories({println "in a closure" })

10.替换/重写tasks

task copy(type: Copy)

task copy(overwrite: true) << {
    println('I am the new one.')
}

11.task条件运行

只有扩展属性isRunHello为true时,才会运行当前task

ext{
    isRunHello=true
}

task hello{
    println '开始hellow'
    hello.onlyIf {
        //某些条件成立才会执行当前任务
        project.hasProperty('isRunHello')&&isRunHello
    }
    doLast{
        println '开始hellow真正执行'
    }
}

12.task依赖

taskA执行完毕执行taskB

taskA.finalizedBy taskB

taskA依赖taskB

task taskA(dependsOn: 'taskB') {

    doLast {
        println('task doLast...')
    }
}

任务内部先后

task taskA{
    doFirst {
        println('task doFirst...')
    }
    doLast {
        println('task doLast...')
    }
}

13.依赖其他任务的gradle脚本

apply from: 'xxx.gradle'

参考链接:https://www.w3cschool.cn/gradle_user_guide

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值