Gradle 入门教程(一):Gradle是什么[通俗易懂]

Gradle 入门教程(一):Gradle是什么[通俗易懂]这是一篇Gradle的入门教程一、Gradle是什么1.1构建工具要解释Gradle是什么,首先要搞清楚一个名词——构建工具(BuildTool)。构建工具,顾名思义就是用于构建(Build)的工具,构建包括编译(Compile)、连接(Link)、将代码打包成可用或可执行形式等等。如果不使用构建工具,那么对于开发者而言,下载依赖、将源文件编译成二进制代码、打包等工作都需要一步步地…

大家好,又见面了,我是你们的朋友全栈君。

这是一篇Gradle的入门教程

一、 Gradle是什么

1.1 构建工具

要解释Gradle是什么,首先要搞清楚一个名词——构建工具(Build Tool)

构建工具,顾名思义就是用于构建(Build)的工具,构建包括编译(Compile)、连接(Link)、将代码打包成可用或可执行形式等等。

如果不使用构建工具,那么对于开发者而言,下载依赖、将源文件编译成二进制代码、打包等工作都需要一步步地手动完成。但如果使用构建工具,我们只需要编写构建工具的脚本,构建工具就会自动地帮我们完成这些工作。

1.2 常用构建工具一览

java生态圈的三大构建工具:

  • Ant :2000年发布,纯java语言编写,具有良好的跨平台性,用buil.xml文件来配置,需要搭配Apache lvy工具来实现网络依赖管理。 Ant是程序式的构建工具,需要自定义构建过程,优点是对于构建过程有良好的控制性
  • Maven :2004年发布,对Ant进行了改进,用prom.xml文件来配置。但与Ant不同的是,Maven是申明式的构建工具,对目录结构有约束,不需要自定义构建过程,配置较为简单。Maven还具有生命周期,更重要的是Maven内置了依赖管理
  • Gradle :2012年发布,Gradle结合了前两者的优点,在此基础之上做了很多改进。它具有Ant的强大和灵活,又有Maven的生命周期管理且易于使用 。 Gradle不用XML,它使用基于Groovy的专门开发的DSL,所以它的配置文件更加简洁。它跟ant一样,使用了ivy作为jar包的依赖管理工具

Gradle、Ant、Maven比较

1.3 Gradle概述

Gradle是一个开源的自动构建工具,它在设计之初就是为了能够灵活地构建几乎所有类型的应用。以下是他的一些重要特性:

  • 高性能:Gradle使用了缓存机制来加快构建
  • 基于JVM:Gradle是基于JVM的工具,这对于熟悉Java的开发者来说是一件好事,因为你可以使用标准的Java APIs 在你的构建逻辑中,比如自定义的task或插件。这同时也使得Gradle可以轻易地实现跨平台。
  • 声明式(Conventions):Gradle汲取了Maven的长处,以Java项目为例,只要将合适的文件放在合适的地方,应用合适的插件就可以简单地执行构建
  • 扩展性:Gradle具有良好的可扩展性,你可以通过自定义task types或甚至自定义build model来拓展Gradle。例如Android的构建工具就引入了许多新的构建概念例如flavours和build types
  • IDE支持,几个主流的IDE都支持导入Gradle构建并且通过图形化界面的方式与Gradle进行交互。

1.4 Gradle的Projects和tasks

ProjectsTasks是Gradle中最重要的两个概念。

  • 任何一个Gradle构建都是由一个或多个projects组成的,projects其实就是Idea、AndroidStudio中的Module

  • tasks顾名思义就是任务,它是Gradle中的原子性操作,如编译、打包、生成javadoc等,一个project中会有多个tasks

我们用Idea新建一个用Gradle构建的Java工程,在右边的Gradle面板中就可以看到我们当前项目中的projects以及每个peoject中的tasks:(里面的tasks包括了Gradle内置tasks以及java插件的tasks)

在这里插入图片描述
还可以在命令行下执行gradle tasks查看当前可执行的tasks

1.5 学习Gradle需要知道的五件事情

1.5.1 通用性

Gradle设计之初就是一个通用的构建工具,它允许你用它来构建任何应用,唯一的限制是Gradle的远程依赖管理目前仅支持Maven和Ivy的仓库

1.5.2 基于tasks

Gradle的构建模块是基于task的,Gradle要做的就是按照task之间的依赖关系来组织task按照合适的顺序运行

1.5.3 Gradle有三个固定的构建步骤

Gradle评估(evaluate)和指定构建脚本时有三个固定步骤:

  1. 初始化(Initialization): 初始化构建所需的运行环境,并检查哪些projects参与构建
  2. 配置(Configuration): 将tasks组织起来,决定它们按何种顺序执行
  3. 执行(Execution): 执行tasks

这些步骤来自于Build Lifecycle(详见后文)

1.5.4 Gradle 在很多方面都可以扩展

虽然Gradle希望你仅通过Gradle内置的逻辑就可以完成构建,但这在实际中几乎是不可能的,所以Gradle提供了集中方式以供你来扩展它:

  • 自定义task types
  • 自定义task actions
  • projectstasks中指定额外的属性
  • 自定义conventions
  • custon model

这一节仅作介绍,后面的章节会详细讲述

参考内容

什么是构建工具

Java构建工具:Ant vs Maven vs Gradle

自定义Gradle插件进阶

W3Cschool

Gradle User Manual

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154161.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java使用键盘输入_java中键盘输入代码

    java使用键盘输入_java中键盘输入代码展开全部程序开发过程中,32313133353236313431303231363533e78988e69d8331333365633962需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:以下将列出几种方法:方法一:…

  • 大数据建模步骤有哪些

    大数据建模步骤有哪些  数据建模,通俗地说,就是通过建立数据科学模型的手段解决现实问题的过程。数据建模也可以称为数据科学项目的过程,并且这个过程是周期性循环的,也是是我们在做数据分析的时候会经常使用的一种数据分析方法,那么大数据建模都有哪些步骤。  1)数据测量  数据测量包括ECU内部数据获取,车内总线数据获取以及模拟量数据获取,特别是对于新能源汽车电机、逆变器和整流器等设备频率高达100KHz的信号测量,ETAS提供完整的解决方案。  2)大数据管理与分析  目前的汽车嵌入式控制系统…

  • js最新手机号码、电话号码正则表达式

    js最新手机号码、电话号码正则表达式

    2021年10月31日
  • GG修改器免root教程_gg修改器免root版怎么用

    GG修改器免root教程_gg修改器免root版怎么用前言:由于疫情期间在家无聊,没事学学Python,学不进去的时候打打和平精英,刷刷抖音,无意中发现一个游戏叫我功夫特牛,然后就想用点手段,O(∩_∩)O哈哈~以前也装过GG修改器,但是是在ROO

  • python读取excel单元格内容_python如何读取文件夹下的所有文件

    python读取excel单元格内容_python如何读取文件夹下的所有文件1.使用python内建的open()方法读取文本相对路径:example/ex2.txt,文件内容如下所示:测试内容,路径和内容,大家可根据自己心情设置。使用open()方法读取:print(‘—-使用python自带的open()读取文件—–‘)path=r’example/ex2.txt’frame=open(path)print(frame.readlines())此时,执行结果报错如下:我猜测open()方法的…

  • next和nextLine的区别

    next和nextLine的区别内容纯属总结,和CSDN上的很多搜索情况内容大致相同,都是正确可靠的。第一种情况:nextline()在前面,next()在后面privatestaticvoidt1(){Strings1,s2;Scannerscanner=newScanner(System.in);System.out.println("请输…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号