gradle⽂件和task介绍
1. gradle⽂件介绍
dependencies {
classpath 'ls.build:gradle:3.0.0'
}
//等同于
dependencies({
classpath 'ls.build:gradle:3.0.0'
})
1.dependencies 其实是⼀个⽅法名,可以加括号也可以不加,可以点击进去。
2.注意,此时添加括号后更⽅便我们理解闭包的含义,
闭包其实就是可以传递的代码块,作为参数进⾏传递。在需要的地⽅调⽤执⾏
3. classpath ‘ls.build:gradle:3.0.0’
等同于,add(“classpath”,“ls.build:gradle:3.0.0”)
那为什么classpath点击进去到DependencyHandler⾥,确不到classPath这个⽅法呢?gradle其实可以处理缺少的⽅法名,在DefaultDependencyHandler⾥
public Object methodMissing(String name, Object args){
Configuration configuration = configurationContainer.findByName(name)
if(configuration ==null){
if(!getMetaClass().respondsTo(this, name, args.size())){
throw new MissingMethodException(Class(), args);
java数组的长度怎么看}
}
Object[] normalizedArgs = llectionize(args)
if(normalizedArgs.length ==2&& normalizedArgs[1]instanceof Closure){
return doAdd(configuration, normalizedArgs[0],(Closure) normalizedArgs[1])
}else if(normalizedArgs.length ==1){
return doAdd(configuration, normalizedArgs[0],(Closure)null)
}
normalizedArgs.each {notation ->
doAdd(configuration, notation,null)
}
return null;
}
1.新建⼀个空⽂件夹,通过 gradle wrapper 命令可以下载下来gradle,该⽬录下多出⼀下⽬录
⾥⾯有gradle wrapper
注意:项⽬运⾏通过gradle,在项⽬中我们并不会打包gradle,所以才有gradle wrapper就是来帮助我们如果没有的话给装上gradle,有的话就不需要下载。
properties是什么文件在gradle⽂件下有⼀个properties⽂件,这个配置⽂件会声明去哪gradle的下载地址。
2. ./gradlew 命令可以在任何⽬录下执⾏,
hive sql 执行顺序⾸先他会在当前modle⽬录下查adle⽂件,如果没有会master⽬录,但安卓没有master⽬录,故会⽗项⽬下但adle。通过该⽂件就可以直接了解项⽬结构了。
3.1 gradle执⾏的⽣命周期:
1.初始化阶段:执⾏adle⽂件,确定主project和⼦project定义xcopy艾高贝
2.定义阶段:执⾏每个project下的adle⽂件,确定task组成的有向⽆环图(即task的依赖关系)
3.执⾏阶段:./gradlew taskName. 根据有向⽆环图来执⾏指定的task
如何在第⼀和第⼆之间插⼊代码:
在adle的最后插⼊代码即可
在第⼆和第三之间插⼊代码:
afterEvalute {
//插⼊代码
}
4.⾃定义task
task taskName {
//普通代码在执⾏./gradlew会被执⾏
doLast {
//在执⾏任务时会被调⽤
linux装回win10系统}
doFirst {
//在执⾏任务时会被调⽤
}
进制表对应表/
/注意,⾃定义task是⼀定要⾄少写⼀个doFirst或者doLast的,不然就执⾏任务时执⾏什么呀!
//doFirst,doLast区别,doFist会在任务队列的头部添加该任务,可具体点进去看下
}
//type: Delete表⽰clean任务是基于Delete
task clean(type: Delete){
//注意此时执⾏./gradlew,会执⾏下⾯这⾏代码,表⽰将删除任务添加到列表⾥。但不会⽴即删除⽂件,⽽是在执⾏任务时删除的
delete rootProject.buildDir
}
如何规定task执⾏的顺序:
⾃定义task时指出就可
task taskA(dependsOn:taskB){ //在执⾏taskA时,先执⾏taskB //也可 ./gradlew taskA taskB }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论