Gradle 自动化构建开源工具

本文介绍 Gradle 构建工具的基础知识,包括下载安装、脚本语法、任务依赖及配置管理等内容,并提供 Java 项目的具体应用实例。

写在前面

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。
面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。

1、下载与安装(windows)

1、gradle官网下载:https://gradle.org/releases/

在这里插入图片描述
2、解压下载Gradle包,配置环境变量
新建系统环境 GRADLE_HOME,值为gradle解压后的目录
找到path变量,后面添加 %GRADLE_HOME%\bin
3、打开cmd,输入gradle -v ,测试是否配置完成

1.1、idea中配置gradle

在IDEA中创建Gradle项目时,会自动生成gradle文件夹,其中就包括 gradle-wrapper.properties ,IDEA默认使用gradle wrapper来创建项目,所以无需安装gradle也可以正常运行。

下面是配置gradle的仓库
在这里插入图片描述

2、基础知识(Gradle 6.9为例)

1、Projects 和 tasks
任何一个 Gradle 构建都是由一个或多个 projects 组成。一个projects 由多个project构成,每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。

2、Gradle 脚本采用 Groovy 书写
脚本示例:build.gradle

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

在该文件目录下执行:gradle -q hello​

以上代码可简写为

task hello {
   
   
    println 'Hello world!'
}

<<在Gradle4.x中被弃用,在Gradle 5.0中被移除。
弃用以前写法:

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

2.1、Gradle 脚本语法

2.1.1、dependsOn

dependsOn 指定依赖关系

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

延迟依赖:依赖在定义之前使用,该依赖会在后面执行

task taskX(dependsOn: 'taskY') {
   
   
    println 'taskX'
}
task taskY {
   
   
    println 'taskY'
}

运行结果

 \> gradle -q taskX
taskY
taskX
2.1.2、创建动态任务

在这里插入图片描述

\> gradle -q task1
I'm task number 1
2.1.3、增加任务行为

为已存在的任务增加行为。

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

为任务增加多个行为

task hello {
   
   
    println 'Hello Earth'
}
hello.doFirst {
   
   
    println 'Hello Venus'
}
hello.doLast {
   
   
    println 'Hello Mars'
}
hello {
   
   
    println 'Hello Jupiter'
}
2.1.4、参数

$hello.name 可以调用任务hello的名字

task hello {
   
   
    println 'Hello world!'
}
hello.doLast {
   
   
    println "Greetings from the $hello.name task."
}

新增一个叫做 myProperty 的属性,用 ext.myProperty 的方式给他一个初始值。

task myTask {
   
   
    ext.myProperty = "myValue"
}

task printTaskProperties {
   
   
    println myTask.myProperty
}
2.1.5、Ant 任务

对 Ant 任务进行了的整合

task loadfile {
   
   
    def files = file('../antLoadfileResources').listFiles().sort()
    files.each {
   
    File file ->
        if (file.isFile()) {
   
   
            ant.loadfile(srcFile: file, property: file.name)
            println " *** 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值