版本
- gradle-4.8.1
GroovyDSL
-
属性访问器的自动转换
{ project.buildDir 等价于: getProject().getBuildDir() project.group = "dianping.beauty" 等价于: project.setGroup("dianping.beauty") }
-
方法调用,括号可选
{ project.setProperty("buildDir","/data") project.setProperty "buildDir","/data" }
任务
-
每个gradle构建都包含三个基本块project、task、property。每个构建包含至少一个project,进而包含一个或多个task。project和task的暴露的属性可以用来控制构建。
-
项目(Project):代表一个正在构建的组件(一个jar文件)或一个想要完成的目标,当构建启动时,gradle会根据build.gradle实例化一个org.gradle.api.Project类
-
任务动作(Task Action):定义了一个当任务执行时最小的工作单元。动作就是在task中合适的地方放置构建逻辑。Task接口提供了两个相关的方法来声明task动作:doFirst(Closure)和doLast(Closure)。当task被执行的时候,动作逻辑被定义为闭包参数被依次执行。
-
可以为每个task只添加一个动作或者多个动作。在内部,每个task都保持了一个动作列表,在运行时,它们按顺序执行。
task printVersion{ group="verion" description="打印版本号" doFirst { println "2.0" } } // –q 表示日志级别为error $ gradle –q printVersion 2.0
-
一个构建至少包含一个项目、一个项目可包含多个任务,项目与项目,项目中任务与任务都可以建立依赖关系。
-
任务名字的缩写:能够以驼峰式的缩写在命令行上执行任务。不如
helloWorld
任务,可以通过gradle hW
(当你的任务名字比较长的时候可以使用缩写,但是必须保证缩写的名字唯一)task helloWorld(){ println "HelloWorld" } $ gradle -q hW HelloWorld
-
排除任务可以使用-x选项
// 这里排除了tH任务 $ gradle -q third -x tH
-
根据表达式跳过任务,调用task对应的onlyIf()方法,跳过task
1. 语法,onlyif方法接收一个闭包作为参数,如果该闭包返回true则该任务执行,否则跳过 taskname.onlyIf{ expression == true} 2. 案例
创建任务
-
第一种方式,本质是调用Project对象中的task(String name)方法
def Task task = task(helloWorld1) helloWorld1.doLast{ println "helloWorld1" }
-
第二种方式,name+Map(配置)
//任务的分组就是对任务的分类 def Task task2 = task(helloWorld2,group: BasePlugin.BUILD_GROUP) helloWorld2.doLast{ println "helloWorld2" }