gradle(1)介绍和基本语法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/m0_38060977/article/details/102763867

一 简介

依赖管理是基于apache Ivy的,任务和构建是基于ant的,脚本是用groovy的

Gradle wrapper
Gradle wrapper允许你在没有安装Gradle的机器上执行构建,这对于持续发布来说是非常有用的,对于一些开源项目屏蔽构建的最低要求来说也是非常有用的,wrapper对于企业来说也是非常重要的,客户端机可以0管理,而且强制了Gradle的版本,可以让出错率更低

详见:Gradle学习(一)——简介

二 实践

详见:http://wiki.jikexueyuan.com/project/gradle/build-script-basics.html

2.1 helloworld

task hello {
    doLast {
        println 'Hello world!'
    }
}

运行

gradle -q hello

简介模式(不需要<<)

task hello  {
    println 'Hello world!'
}

2.2 任务依赖

task hello  {
	doLast{
		println 'Hello world!'
	}
    
}
task intro(dependsOn: hello) {
	doLast{
		println "I'm Gradle"
	}
    
}

为什么还要用doLast?
<<在5.0之后被移出,而不写的话。任务会依次执行。

2.3 延迟依赖

即被依赖项写在后面

task intro(dependsOn: 'hello') {//注意:当引用的任务尚未定义的时候不可使用短标记法来运行任务。
	doLast{
		println "I'm Gradle"
	}
    
}
task hello  {
	doLast{
		println 'Hello world!'
	}
    
}

2.4 动态任务

4.times { counter ->//这里构建了4个任务,这应该时Groovy的遍历语法
    task "task$counter"  {//这里是双引号
	doLast{
		println "I'm task number $counter"
	}
	
    }
}

#2.5 任务操纵

一旦任务被创建后,任务之间可以通过 API 进行相互访问。这也是与 Ant 的不同之处。比如可以增加一些依赖

2.5.1增加依赖

4.times { counter ->
    task "task$counter"  {
	doLast{
		println "I'm task number $counter"
	}
	
    }
}
task0.dependsOn task2, task3

2.5.2 增加任务行为

task hello  {
	doLast{
	  println 'Hello Earth'
	}
}
hello.doFirst {
    println 'Hello Venus'
}
hello.doFirst {
    println 'Hello Venus repeat'
}
hello.doLast {
    println 'Hello Mars'
}
hello  {
	doLast{
		println 'Hello Jupiter'
	}
    
}

//doFirst后的先,doLast后的后。即后面的会覆盖前面
Hello Venus repeat
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter

doFirst 和 doLast 可以进行多次调用。他们分别被添加在任务的开头和结尾。当任务开始执行时这些动作会按照既定顺序进行

2.5.3 短标记法

你早就注意到了吧,没错,每个任务都是一个脚本的属性,你可以访问它:

以属性的方式访问任务

task hello  {//这里有task
    doLast{
      println 'Hello Earth'
    }
}
hello.doLast {//必须先声明task
    println "Greetings from the $hello.name task."
}

2.6 增加自定义属性

你可以为一个任务添加额外的属性。例如,新增一个叫做 myProperty 的属性,用 ext.myProperty 的方式给他一个初始值。这样便增加了一个自定义属性。

task hello  {
    doLast{
      println 'Hello Earth'
    }
	ext.myProperty = "myValue"
}
task printTaskProperties  {
doLast{
println hello.myProperty
}
    
}

2.7 调用 Ant 任务

2.8 定义默认任务

task hello  {
    doLast{
      println 'Hello Earth'
    }
	ext.myProperty = "myValue"
}
task printTaskProperties  {
doLast{
println hello.myProperty
}
    
}
defaultTasks 'hello', 'printTaskProperties'

三 命令行实践(二)

参考:Gradle学习(二)——命令行

3.1 多任务执行

gradle命令可以同时执行多个任务,参数为任务列表,参数列表中的任务会按顺序执行,例如gradle compile test,compile任务和test任务都会被执行,包括test依赖的任务,但要注意的一点是,同一个任务只会执行一次,不管是列表中的任务,还是列表任务依赖的任务,同一个任务只会执行一次

3.2 排除任务

gradle dist -x test

dist任务依赖于test任务,但是使用**-x之后test任务并没有执行**,test依赖的compileTest任务也没执行,test也依赖于compile任务,但是compile同时也会被dist依赖,并且没有排除,因此compile执行了。

3.3 忽略失败继续执行

-continue参数

3.4 任务名缩写

支持缩写(最少两个字符)
支持驼峰(cT)

3.5 指定build配置文件/屏蔽其他辅助型输出/多项目的构建

指定build配置文件:-b指定要执行的build文件(-b=--build-file
屏蔽其他辅助型输出:-q标签是用来屏蔽其他辅助型输出的,只输出任务的输出流或者错误流(-q=–quiet)
多项目的构建:-p指令(-p=–project-dir),常用于多个项目的构建,当然文件名要使用默认的buil.gradle了
可组合使用

gradle -q  -p subfile -b secondbuild.gradle  cT

3.6 强制任务执行

没试过

> gradle --rerun-tasks jar

BUILD SUCCESSFUL in 7s
4 actionable tasks: 4 executed

Gradle Task UP-TO-DATE

3.7 查看构建信息

首先需要一个gradle项目

参考

gradle学习

猜你喜欢

转载自blog.csdn.net/m0_38060977/article/details/102763867
今日推荐