Gradle工具使用

Gradle只是一个通过Groovy编写task脚本来实现项目构建的工具。需要自己实现task,通过 gradle -q
taskName执行脚本

Java使用Gradle

java插件

java使用Gradle需要引入java插件,已经实现构建/编译等脚本(gradle tasks列出所有task)

apply plugin: 'java'

加入仓库

repositories {
    mavenCentral()
}

加入依赖

dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

定制属性(可以通过task properties列出所有属性)

sourceCompatibility = 1.5
version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
    }
}

发布

uploadArchives {
    repositories {
       flatDir {
           dirs 'repos'
       }
    }
}

IDEA插件

apply plugin: 'idea'

生产IDEA项目

gradle idea

定义一个多项目结构(setting.gradle)

include "shared", "api", "services:webservice", "services:shared"

子项目通用配置(subprojects )

ubprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse-wtp'

    repositories {
       mavenCentral()
    }

    dependencies {
        testCompile 'junit:junit:4.11'
    }

    version = '1.0'

    jar {
        manifest.attributes provider: 'gradle'
    }
}

子项目之间依赖

dependencies {
    compile project(':shared')
}

依赖配置

  • compile-用来编译项目源代码的依赖.
  • runtime-在运行时被生成的类使用的依赖. 默认的, 也包含了编译时的依赖.
  • testCompile-编译测试代码的依赖. 默认的, 包含生成的类运行所需的依赖和编译源代码的依赖.
  • testRuntime-运行测试所需要的依赖. 默认的, 包含上面三个依赖.
dependencies {
    compile 'org.hibernate:hibernate-core:3.6.7.Final'
}

仓库

repositories {
    mavenCentral()
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}

发布artifacts-需要加入maven插件

插件可以很好的定义一个项目的 artifacts, 所以你并不需要做一些特别的工作来让 Gradle 需要发布什么. 你可以通过在 uploadArchives 任务里加入仓库来完成

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://localhost/tmp/myRepo/")
        }
    }
}

Groovy插件

这个插件扩展了 Java 插件, 加入了编译 Groovy 的依赖. 你的项目可以包含 Groovy 的源代码, Java 源代码-需要配置仓库地址和引入gradle依赖

apply plugin: 'idea'
apply plugin: 'groovy'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.3'
    testCompile 'junit:junit:4.11'
}

War插件 - 构建war包

这个插件也会在你的项目里加入 Java 插件. 运行 gradle build 将会编译, 测试和创建项目的 WAR 文件. Gradle 将会把源文件包含在 WAR 文件的 src/main/webapp 目录里. 编译后的 classe , 和它们运行所需要的依赖也会被包含在 WAR 文件里.

apply plugin: 'war'

jetty插件-运行web应用

apply plugin: 'jetty'

执行gradle命令

gradle jettyRunWar 

Gradle命令

排除任务

gradle build-x test

失败后继续执行

gradle build-x test --continue

Gradle构建脚本

项目API

java 对于构建脚本中每个项目,Gradle 都创建了一个 Project 类型的对象用来关联此项目
构建脚本中每个被调用的方法(这些方法并未在构建脚本中定义)都被委托给当前 Project 对象(使用 Project 对象引用方法)。

构建脚本中每个被操作的属性(这些属性并未在构建脚本中定义)都被委托给当前 Project 对象(使用 Project 对象引用属性).

println name
println project.name

项目属性

Project 对象提供了一些标准的属性,您可以在构建脚本中很方便的使用他们. 下面列出了常用的属性:

NameTypeDefault Value
projectProjectProject 实例对象
nameString项目目录的名称
pathString项目的绝对路径
descriptionString项目描述
projectDirFile包含构建脚本的目录
buildFileprojectDir/build
groupObject未具体说明
versionObject未具体说明
antAntBuilderAnt实例对象

局部变量

局部变量使用关键字 def 来声明,其只在声明它的地方可见 . 局部变量是 Groovy 语言的一个基本特性.

def dest = "dest"

    task copy(type: Copy) {
          form "source"
          into dest

    }

拓展属性

在 Gradle 领域模型中所有被增强的对象能够拥有自己定义的属性. 这包括,但不仅限于 projects , tasks , 还有 source sets . Project 对象可以添加,读取,更改扩展的属性. 另外,使用 ext 扩展块可以一次添加多个属性.

apply plugin: "java"

// 向 Project 对象添加了两个扩展属性
ext {
    springVersion = "3.1.0.RELEASE"
    emailNotification = "build@master.org"
}

// perpose 的属性被添加到每个 sourceSets
// sourceSets 定义
sourceSets.all { ext.purpose = null }

Groovy特性

属性存取器

Groovy 自动将一个属性的引用转换为相应的 getter 或 setter 方法.

// 使用 getter 方法
println project.buildDir
println getProject().getBuildDir()

可有可无的圆括号

在调用方法时,圆括号可有可无,是个可选的.

test.systemProperty 'some.prop', 'value'
test.systemProperty('some.prop', 'value')

闭包

def static funcWithClosure(int num, final Closure closure) {
        (1..num).collect { closure(it) }
    }
println funcWithClosure(5, {x -> x*x})

当一个方法的最后一个参数是一个闭合时,您可以在方法调用后放置一个闭合.

println funcWithClosure(5) { x -> x * 2 }

Task

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值