深入探究gradle build的各个方面

一、gradle build的基本介绍

Gradle是一个基于JVM的构建工具,主要特点是灵活性和可扩展性。Gradle构建过程包含了三个阶段:初始化阶段、配置阶段和执行阶段。gradlew是Gradle wrapper,它能让一个项目的用户使用指定版本的Gradle进行编译,而不需要安装任何Gradle的版本。

二、gradle build的配置文件

Gradle的构建是由Groovy或Kotlin脚本编写的,它们是放在build.gradle文件中的。Gradle的配置文件由两部分组成:Project和Task,它们都是对象。在Gradle中,Project对象表示整个构建,并且在Gradle的配置文件中表现为根项目,而Task对象则表示Gradle构建中的一个单元。使用配置文件我们可以定义项目相关的属性,配置插件,以及定义task等。

三、gradle build中常用的task

在Gradle的配置文件中,常常会使用Gradle中的Task。Task是指构建中的一个单元。我们可以通过依赖关系来定义task,也可以通过插件来创建task。在Gradle中,内置了很多task,这里我们只介绍几个常用task。

  • clean:删除构建文件夹,这个task只有一个action,即删除指定文件夹下的所有内容
  • compileJava:编译Java源文件,它的依赖关系是Java源文件,Java编译器和编译输出目录。如果源文件在修改或者删除,这个task将重新运行
  • test:运行单元测试
  • build:执行clean、compile和test等操作
task clean(type: Delete) {
    delete rootDir.path + '/build'
}

task build(dependsOn: ['clean', 'compileJava', 'test'])

四、gradle build中的插件

插件是Gradle的一个核心概念。通过插件,users可以使用Java、Groovy、Scala等语言开发各种各样的应用。Gradle插件以Jar文件的形式出现,可以通过Gradle仓库和Maven仓库进行下载。通过使用其他人写的插件,我们可以使用一些预制的Task,或者针对一些应用场景提供的特殊功能。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

apply plugin: 'java'

五、gradle build中的依赖管理

Gradle的依赖管理非常灵活,可以定义项目的依赖关系,引入第三方的jar包等等。

  • 引入外部依赖
    可以使用Maven的依赖语法,通过mavenCentral或jcenter仓库来拉取外部依赖。
  • 定义项目依赖关系
    在Gradle中,可以通过dependencies块和称作依赖配置(Dependency Configuration)的块来定义一个项目的依赖关系。
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'junit:junit:4.12'
    compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
}

六、gradle build中的额外配置

在Gradle中,可以使用buildSrc目录下的build.gradle文件来定义一些额外配置,这些配置都是来增强Gradle本身的功能。比如添加一个自定义Task,构建脚本中经常会使用到,这样可以让构建逻辑的复用性更好。

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
}

task prettyPrintJson(type: JavaExec) {
    main = "com.google.gson.JsonParser"
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    args = [
            '-n',
            '-i', 'src/main/resources/test.json'
    ]
    workingDir = file("$projectDir")
}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/160987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-21 01:17
下一篇 2024-11-21 01:17

相关推荐

  • 为什么Python不能编译?——从多个方面浅析原因和解决方法

    Python作为很多开发人员、数据科学家和计算机学习者的首选编程语言之一,受到了广泛关注和应用。但与之伴随的问题之一是Python不能编译,这给基于编译的开发和部署方式带来不少麻烦…

    编程 2025-04-29
  • 从多个方面用法介绍yes,but let me review and configure level of access

    yes,but let me review and configure level of access是指在授权过程中,需要进行确认和配置级别控制的全能编程开发工程师。 一、授权确…

    编程 2025-04-29
  • 从多个方面zmjui

    zmjui是一个轻量级的前端UI框架,它实现了丰富的UI组件和实用的JS插件,让前端开发更加快速和高效。本文将从多个方面对zmjui做详细阐述,帮助读者深入了解zmjui,以便更好…

    编程 2025-04-28
  • Gradle Sync很慢的解决方法

    Gradle Sync是Android Studio中一个非常重要的过程,它用于同步项目中所有模块的gradle配置和依赖库等信息。但是,在实际开发中,我们经常会遇到Gradle …

    编程 2025-04-28
  • 学Python用什么编辑器?——从多个方面评估各种Python编辑器

    选择一个适合自己的 Python 编辑器并不容易。除了我们开发的应用程序类型、我们面临的软件架构以及我们的编码技能之外,选择编辑器可能也是我们编写代码时最重要的决定之一。随着许多不…

    编程 2025-04-28
  • 如何通过IDEA设置gradle的heap大小

    在IDEA中设置gradle的heap大小可以有效提高gradle编译、运行等使用效率,本文将从以下几个方面介绍如何通过IDEA设置gradle的heap大小。 一、设置gradl…

    编程 2025-04-28
  • 创建列表的多个方面

    本文将从多个方面对创建列表进行详细阐述。 一、列表基本概念 列表是一种数据结构,其中元素以线性方式组织,并且具有特殊的序列位置。该位置可以通过索引或一些其他方式进行访问。在编程中,…

    编程 2025-04-28
  • Python在电气自动化控制方面的应用

    本文将为大家介绍Python在电气自动化控制方面的应用,包括基础知识、自动化测试、数据处理、仿真模拟等方面。Python是一种高级编程语言,具有简洁优雅的语法、丰富的功能库和强大的…

    编程 2025-04-27
  • Python判断语句执行成功的多个方面解析

    本文将从多个方面解析Python判断语句的执行成功,包括运算符的使用、多重判断语句、断言的使用以及异常处理等内容。 一、运算符的使用 在Python中,运算符不仅可以用于数据的运算…

    编程 2025-04-27
  • 从多个方面用法介绍devuan

    在本文中,我们将从多个方面对devuan进行详细的阐述,包括devuan的概念、特点、安装、常用操作等。 一、devuan的概念和特点 devuan是一款基于Debian Linu…

    编程 2025-04-27

发表回复

登录后才能评论