gradle浅析

gradle全局抽象概念理解

gradle语言层组成:

1、gradle是基于DSL(领域特定语言)的自动化构建工具,这表明gradle并非一种通用的编程语言,只是服务于解决软件工程自动化构建领域的特定语言。
2、gradle是以groove语言为基础。groove语言被称为更好的java语言,是一种动态语言,可以与spring无缝集成。既然Gradle核心是Groovy,Groovy本质又是Java,所以很明显可以发现Gradle环境必须依赖JDK与Groovy库。groove语言知识了解groove脚本基础全攻略

gradle领域组成 : project和task、action

Gradle里面的任何东西都是基于Project和Task这两个概念,基于这两个概念,Gradle官方放出的指导手册是这么描述的:

每一个构建都是由一个或多个Project构成的.一个Project到底代表什么依赖于你想用Gradle做什么.举个例子,一个Project可以代表一个JAR或者一个网页应用.它也可能代表一个发布的 ZIP压缩包,这个ZIP可能是由许多其他项目的JARs构成的.但是一个Project不一定非要代表被构建的某个东西.它可以代表一件要做的事,比如部署你的应用.
每一个Project是由一个或多个Task构成的.一个Task代表一些更加细化的构建.可能是编译一些classes,创建一个JAR,生成javadoc,或者生成某个目录的压缩文件.
每个Task又是由一个或多个Action构成的,Gradle中有两种类型的Action,分别是doFirst和doLast.

gradle DSL 基础

Gradle的实质是配置脚本,执行一种类型的配置脚本时就会创建一个关联的对象,譬如执行Build script脚本就会创建一个Project对象,这个对象其实就是Gradle的代理对象。下面给出来各种类型Gradle对应的对象类型:

脚本类型关联对象类型
Build scriptProject
Init scriptGradle
Settings scriptSettings
 Gradle的三种主要对象解释如下:
 Project对象:每个build.gradle会转换成一个Project对象。
 Gradle对象:构建初始化时创建,整个构建执行过程中只有这么一个对象,一般很少去修改这个默认配置脚本。
 Settings对象:每个settings.gradle会转换成一个Settings对象。
可以看见,当我们编写指定类型Gradle脚本时我们可以直接使用关联对象的属性和方法;当然了,每个脚本也都实现了Script接口,也就是说我们也可以直接使用Script接口的属性与方法。

gradle脚本语法基础示例

// Apply the java plugin to add support for Java
apply plugin: 'java'
//多项目支持,Gradle支持可以将一个Project划分成为一个或多个子Project来构成
//include 'SubProject1','SubProject2','SubProject3'.........

//依赖库配置,支持maven , ivy , jCenter库,也可配置为本地库
repositories {
    // You can declare any Maven/Ivy/file repository here, default is jCenter().
    mavenCentral() //本地库支持
    maven { //远程库支持
        url "http://repo.mycompany.com/maven2" //远程库地址
    }
}
/*依赖管理,模式为 scope group:'groupName',name:'artifactName',version:'versionNum'
      可选的scope有:compile,testCompile,classpath等
*/
dependencies {
    compile 'org.slf4j:slf4j-api:1.7.21'
    testCompile 'junit:junit:4.12'
    compile group: 'org.kasource.kajmx', name: 'ka-jmx-web', version: '0.2'
    compile group: 'mx4j', name: 'mx4j', version: '3.0.2'
    compile group: 'mx4j', name: 'mx4j-tools', version: '3.0.1'
    compile group: 'mx4j', name: 'mx4j-impl', version: '2.1.1'
    compile group: 'cglib', name: 'cglib-nodep', version: '3.2.4'
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
    compile group: 'jdom', name: 'jdom', version: '1.1'
    compile group: 'org.springframework', name: 'spring-support', version: '2.0.8'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2.2'
}
//任务定义方式,从下例中可以看到对action的使用方式
task hello{  //定义一个no-action类型的任务,在任何其他类型的任务执行时,该任务内部代码都会被调用
    println 'hello world'
}
task helloAction << { //定义一个action类型的任务,仅在调用该任务本身时执行,其实是doLast{} Action的简写方式
    println 'hello action'
}
task helloLoop << { //循环的使用方式,.times 和 it是关键字
    10.times{a->  //此处a-> 可省略,下一句中的a 可用it替代,因为循环中包含隐式参数it
        println "it is: " + a
    }
}
//任务依赖
task dependsHell(dependsOn:hello)<<{
    println "I'm depends on task named 'hello'"
}

常用的gradle命令

  • 查看版本号: gradle -v
  • 编译执行某个task: gradle Task名
  • 静默编译执行某个task: gradle -q Task名(q表示quiet模式,表示编译执行Gradle脚本的过程中,只输出必要的信息. 除了quiet模式外,Gradle中还有其他三种模式)
  • 编译执行某个Project中的某个task:gradle -b Project名 Task名(Gradle默认只执行build.gradle文件中,自定义其他文件xxx.gradle编译运行显式指定Project名称,这里的build.gradle其实表示的就是build Project)
  • 显示所有的Project:gradle projects 显示所有的task:gradle tasks
  • 显示gradle的gui:gradle –gui 或 gradle –gui&(后台运行)
  • 查找所有的gradle命令: gradle –help

Gradle脚本语言详细信息可参考gradle脚本基础全攻略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值