gradle是语言式构建,和maven配置型还是差别挺大,琢磨了2天
1.在解析setting.gradle之后,开始解析build.gradle之前,这里如果要干些事情(更改build.gradle校本内容),可以写在beforeEvaluate
2.在所有build.gradle解析完成后,开始执行task之前,此时所有的脚本已经解析完成,task,plugins等所有信息可以获取,task的依赖关系也已经生成,如果此时需要做一些事情,可以写在afterEvaluate
参考文档: https://segmentfault.com/q/1010000004503896/a-1020000004504034
3.自定义的task如
task task1(type:Copy){
//code
}
象这样定义的task, 不管执行gradle哪个默认task如build,clean等都会执行 task1
4.task的执行顺序,比如定义了task1, 我们希望执行完系统build task后执行自定义task1可以这样写
project.build.doLast{
tasks.each{
task->
if(task.name.equals("task1")){
task.execute()
}
}
}
5.如果想buid打包的时候去除一些文件,可以加上如下代码
processResources{
exclude {"**/*.properties"} //去除properties
}
6.task不可以重名,会报错, 如果通过apply 加载其他gradle文件,task重名也会报错
apply from:"../test.gradle"
tasks.each{
task->
if(task.name.equals("task1")){
task.execute()
}}
apply from:"../test2.gradle"
tasks.each{
task->
if(task.name.equals("task1")){
task.execute()
}}
如果test1.gradle, test2.gradle里面都有个叫task1的task, 这样会报错