gradle(1)介绍和基本语法

一 简介

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

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

详见: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学习

Learn how to use Gradle's powerful dependency management through extensive code samples, and discover how to define, customize, and deploy dependencies About This Book Be in total control of your dependencies Deploy your artifacts to repositories with Gradle Learn through code snippets and real-life examples Who This Book Is For If you work on Java projects, use Gradle as a build automation tool, and you use dependencies in your project, this is the book for you. Additionally, if you want to deploy your project artifacts as dependencies for other developers using Gradle, you've found the right book. In Detail Gradle is the next generation in build automation. It allows you to define dependencies for your project in a clear way and also customize how they are resolved to suit your needs. It offers fine-grained control over how to publish your artifacts to Maven and Ivy repositories. Gradle Dependency Management defines dependencies for your Java-based project and customizes how they are resolved. You will learn how to configure the publication of artifacts to different repositories. Packed with plenty of code samples, you will understand how to define the repositories that contain dependencies. Following this, you will learn how to customize the dependency resolution process in Gradle. Table of Contents Chapter 1. Defining Dependencies Chapter 2. Working with Repositories Chapter 3. Resolving Dependencies Chapter 4. Publishing Artifacts Chapter 5. Publishing to a Maven Repository Chapter 6. Publishing to Bintray Chapter 7. Publishing to an Ivy Repository
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值