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