Gradle构建项目深入浅出

Kotlin in Action

文章目录

  • 系列文章目录
  • 前言
  • 一、gradle安装及入门使用
  • 二、gradle的project和task
  • 三、gradle的依赖管理
  • 五、gradle增量式更新任务
  • 六、gradle常用插件
  • 七、gradle依赖冲突
  • 八、gradle插件自定义扩展
  • 九、gradle调用外部扩展
  • 总结

前言

这里主要记录基于Kotlin的Gradle构建工程的基本使用和Gradle的基本性质及优势


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是Gradle?

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala。

二、gradle安装及入门使用

1.下载位置:www.gradle.org

2.安装过程:将压缩文件解压,并添加环境变量

3.测试安装:打开CMD键入gradle,见如下图说明安装成功

入门使用(基于kotlin构建项目):

1.创建工程:

2.修改配置文件:

3.测试运行:

三、gradle的project和task

1.概述:

Gradle中的所有内容都基于两个基本概念:项目(Project)和任务(Task)。每个Gradle构建都是由一个或多个project组成。每个project都是有一个或者多个任务组成。任务之间具有依赖关系,保证了任务的执行顺序。任务代表构建执行的一些原子工作。

2.project:

我们首先讲一下Project的概念。每个build.gradle 就对应一个project。构建中的每一个project,Gradle都会创建一个Project对象,并将这个对象与构建脚本相关联。简单的说,build.gradle是对一个Project对象的配置。以Android项目为例,在项目的根目录会有一个build.gradle文件,在每个模块的目录下也会有一个build.gradle 文件。

3.Task及Task生命周期:

任务是主要的工作执行者。每个任务有多个Action组成。

Task生命周期分为:扫描和执行两个过程

var name = "uname"//扫描时执行
doFirst{}//运行时执行
doLast{}//运行时执行

4.基本使用及依赖关系:

task("task1"){doFirst{println("this is task 1")}
}
task("task2"){doFirst{println("this is task 2")}
}.dependsOn("task1")
task("task3"){doFirst{println("this is task 3")}
}.dependsOn("task2")

四、gradle的依赖管理:

依赖管理(在 build.gradle 中):

1、定义依赖仓库(repositories):

Gradle 要求至少定义一个依赖仓库,依赖仓库可以是文件系统,也可以是中心服务器。最常用的是 jcenter 和 mavenCentral。

2、申明依赖(dependencies):

和 Maven 类似,依赖的坐标直接为:group、name、version。此外,引入不同的插件会引入不同的依赖配置类别。

/*** Gradle代码:* 使用HttpClient为例添加依赖管理*/
repositories {mavenCentral()jcenter()
}
dependencies{compile(kotlin("stdlib"))//compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.4.1'compileOnly("org.apache.httpcomponents","httpclient","4.4.1")
}

五、gradle增量式更新:

如果我们将Gradle的Task看作一个黑盒子,那么我们便可以抽象出输入和输出的概念,一个Task对输入进行操作,然后产生输出。为了提高构建效率,Gradle引入了增量式构建的概念。在增量式构建中,我们为每个Task定义输入(inputs)和输入(outputs),如果在执行一个Task时,如果它的输入和输出与前一次执行时没有发生变化,那么Gradle便会认为该Task是最新的(UP-TO-DATE),因此Gradle将不予执行。一个Task的inputs和outputs可以是一个或多个文件,可以是文件夹,还可以是Project的某个Property,甚至可以是某个闭包所定义的条件。

  • inputs.dir()
  • inputs.file()
  • outputs.dir()
  • outputs.file()
task("printfilename"){inputs.dir("src")//输入outputs.files("des.txt")//输出doFirst{var dir = fileTree("src")var des = file("des.txt")des.appendText("")Thread.sleep(3000)dir.forEach{if (it.isFile){des.appendText(it.absolutePath)des.appendText("\r\n")}}}
}

六、gradle常用插件:

插件是包含一个或多个任务的合集

  • application插件
  • java插件
  • war插件

七、gradle依赖冲突:

gradle会自动依赖最高版本的库文件

八、gradle插件自定义扩展:

task("mycopy",Copy::class){from("")into("")
}
task("mydelete",Delete::class){setDelete("")
}

九、gradle调用外部扩展:

/*** 执行一段java代码*/
task("exejava"){javaexec{main = ""classpath()}
}

Gradle构建项目深入浅出相关推荐

  1. 使用Gradle构建项目

    本文由 ImportNew - 唐尤华 翻译自 spweblog.blogspot.com.如需转载本文,请先参见文章末尾处的转载要求. 在最近的Google IO大会上我注意到Android Stu ...

  2. [Gradle] 在 Eclipse 下利用 gradle 构建系统

    构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...

  3. Gradle构建脚本入门

    黄少存,叩丁狼高级讲师,本文为原创文章,转载请注明出处.   上一篇咱们已经知道了Gradle构建脚本的重要性,要使用比较复杂的项目构建就需要来书写构建脚本,那Gradle 的构建脚本有哪些呢,请看构 ...

  4. Gradle 构建速度优化

    构建速度优化 AS编译太慢是我们经常吐槽的,我们该做些什么来加快编译的速度呢?前面我们简单的了解了gradle构建项目的流程.我们可以从以下几个方面来做: 注意AS配置: 如及时更新Gradle和JD ...

  5. 【业余开发笔记】用gradle构建一个简单的rest api

    以下是一些gradle构建项目的使用笔记,由于自己对maven也算太了解,所以不谈区别和优劣了,就简单总结一下关于gradle的使用好了. 以下是关于用gradle构建一个以spring boot为框 ...

  6. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  7. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02

    概述 将工程托管到Github Gradle构建 为什么一个main函数就能启动web并提供这么多功能 幕后的 Spring Boot 分发器和 multipart 配置 视图解析器.静态资源以及区域 ...

  8. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

    文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...

  9. Android Studio目录结构和Gradle构建Android项目

    一,Android Studio的目录结构和工程项目介绍 二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运 ...

最新文章

  1. 1.1 计算机的发展
  2. 科大星云诗社动态20210319
  3. spring声明事务与编程事务概述
  4. python打包成.exe程序
  5. 笨人可以学计算机吗,为什么有的笨人一旦开窍,其人生就像开了挂似的呢?
  6. 前端学习(2956):项目中组件的本地注册
  7. Redis 巧用数据类型实现亿级数据统计
  8. 企业邮箱及邮件服务器架设
  9. Ajax网络超时和和网络异常
  10. Android ADB动态查看内存信息之Watch使用
  11. MFC Windows 程序设计[五]之绘制表格Accel
  12. Python中写入文件操作
  13. r720支持多少频率的内存吗_二维码门禁你知道支持多少种识别方式吗?
  14. 硅谷之行 (15) Fremont观豪宅
  15. Oracle数据库递归查询
  16. 计算机等级考试四级 网络工程师 之 操作系统原理1 适合懒人备考哈哈哈
  17. Linux 文件的属性
  18. Serverlet 介绍
  19. 网易游戏AI Lab招聘计算机视觉日常实习生
  20. 寻址 far near

热门文章

  1. Evita Full-Medium-Light与SHE差异
  2. Safari不能浏览网页的一种解决方法
  3. 云媒体服务器设置在哪个文件夹,安装和使用Jellyfin配置Linux媒体服务器
  4. Vue中slot的使用(通俗易懂)
  5. 精简BLL业务层,使用范型复用常用方法
  6. 当超跑「遇上」激光雷达,路特斯ELETRE背后还有哪些黑科技
  7. 电赛A题无线运动传感节点总结(一)
  8. 服务器性能计数器驱动没装上,安装和删除 AD DS 的已知问题
  9. MACS2 -m/--mfold使用
  10. 加入收藏夹,设为首页代码,强制设为主页代码