写点什么

Gradle 学习笔记

用户头像
ES_her0
关注
发布于: 2021 年 05 月 11 日

为什么我们需要一个构建工具

什么是构建

针对 java 项目,构建的过程包括:

  • 生成资源 (有时)

  • 编译

  • 编译测试资源

  • 运行测试

  • 打包:jar,war

  • 运行相关检查,包括 checkstyle 等

  • 生成报告

管理多文件项目时,我们需要的是约定优于配置。例如../src/main/java 存放 java 源文件

编译打包自动化执行,节约时间,避免错误

Gradle 是一种构建工具

  • 高性能

    Gradle 可以避免不必要的构建,因为可以利用上一次构建的结果,只重新构建改动的内容。通过 gradle wrapper,可以利用别的机器上的构建的结果。

  • 基于 JVM

    只要有 jvm 的地方都可以运行,保证了跨平台的特性。而且,gradle 不仅限于构建 Java 应用,支持 C/C++,JavaScript,Scala,Groovy,Kotlin

  • 约定

    继承了 maven 的良好设计,使用约定的配置,同时提供良好的扩展性

  • 扩展性

  • 洞察力

    提供了大量的构建信息,方便快速定位性能问题

我们 maven 用的挺好的

  • gradle 是新技术吗?

    不算是,早就在安卓界普及了。比较成熟

  • gradle 简洁

    gradle 基于 groovy 语言,配置的行数比 xml 的 pom 少很多倍

  • gradle 快

    针对同一个 java 项目,gradle 构建的时间比 maven 少很多倍

  • gradle 灵活

    约定大于配置

  • gradle 可以直接使用 maven 仓库中的依赖

    gradle 不是一个全新的东西,没有否定 maven。只是取其精华,去其糟粕

构建工具的发展历程

ant ——> maven ——> gradle

各自解决了一些问题

Gradle 重要概念

Gradle 有两个最重要的概念:project 和 task。一次构建可以有 1 到 n 个 project,每个 project 有 1 到 n 个 task。

构建脚本块

gradle 约定大于配置,以下是顶级的构建脚本声明块



dependencies 中的依赖关系:


implementation:它仅仅对当前的Module提供接口,使用 implementation 屏蔽了外部模块直接调用它声明的依赖


api:编译时与 implementation 相反,它允许外部模块不管在编译时还是运行时都可以调用 api 声明的依赖。和原来的 compile 很类似。


大部分情况下,默认使用 implementation


  • 速度快

  • 隐藏大部分实现细节

用户头像

ES_her0

关注

还未添加个人签名 2018.03.21 加入

还未添加个人简介

评论

发布
暂无评论
Gradle学习笔记