首页 > 自考资讯 > 自考知识

gradle原理,gradle命令有哪些

头条共创 2024-06-27

1 Gradle是一种编程框架

gradle主要由三部分组成:

1 groovy 核心语法2 构建脚本块3 gradle api 注意:本章的所有代码都可以在https://github.com/jiulu313/gradledemo.git 找到。

如下所示

b1a6b4e6330a433683a5c06aacd9260b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720071108&x-signature=9wcZOiCoo5OONdIljBx6LmwxQ6g%3D

2 Gradle的优势

1 由于gradle是一个编程框架,因此更加灵活,功能也强大得多。 2 在粒度方面,源代码编译和资源编译都可以按任务进行更改。 3.在扩展性方面,Gradle有插件机制。这些好处是因为Gradle 实际上是一个编程框架。

3 Gradle的生命周期

Gradle生命周期分为三个部分:

1 初始化阶段:解析整个项目中的所有项目并为所有项目构建项目对象。该阶段主要涉及解析setting.gradle文件。 2 配置阶段:解析所有项目对象的任务并构建所有任务拓扑图。主要解析各个项目的build.gradle文件。 3 执行阶段:执行特定任务及其依赖任务。

d7c3a22d4de040e19a16f1ccd655dfe9~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720071108&x-signature=sVJepfyizQa%2BOLeVoXtoITUtsXI%3D如下图

4 Gradle的生命周期的监听

将以下代码添加到根build.gradle

/** * 开始配置阶段前监听回调*/this.beforeEvaluate { println '开始配置阶段111.'}/** * 监听配置阶段后回调*/this.afterEvaluate { println '配置阶段执行完成222.'}/** * Gradle 执行后回调*/this.gradle.buildFinished { println '执行阶段完成.'}//beforeEvaluatethis.gradle .beforeProject equals {}//afterEvaluatethis .gradle.afterProject { equals println '配置阶段执行完成333.'} 然后运行./gradlew build 会输出相应的日志

5 Project详解

在Gradle 中,项目概述是一个非常重要的概念,因为项目通常用于Android 活动等内容

在Android项目中,所有库和模块都是项目

查看所有项目

./gradlew project //这里是输出---------------------------------------- -- ---- ------------------ 根项目------------------------ -- --------- ---------------------------------- 根项目'gradledemo' +- -- 项目':app'+--- 项目':mylib'+--- 项目':test'\--- 项目':utils'

可以看到当前项目下有5个项目,其中有一个根项目,其余4个是子项目。项目采用树状结构,根项目的角色如下:管理子项目。

我应该如何管理它?这是通过下面描述的相应API 进行管理的。每个项目对应一个输出

每个项目都有一个build.gradle文件,这也是项目的标识符。

5.1 项目核心API

1 gradle生命周期api2 项目相关api3 任务相关api4 属性相关api5 文件相关api6 其他API 在gradle 中,build.gradle 文件被编译为proejct 字节码,所以所有写在build.gradle 中的代码都是等价的。在项目的类中

输出所有项目

//在根项目下的build.gradle中,获取所有项目并添加以下代码。 //调用方法getProjects() //获取所有projectdef getProjects(){ println '------------ - ' println '根项目' println '------ ----- -----' //getAllprojects() 返回所有项目的集合this.getAllprojects().eachWithIndex { project project, int index - if(index==0){ println ' Root project :'${project. name}'' }else{ println '+--- Project '${project.name}'' } }}//运行./gradlew clean,输出为:- ---------根项目- -------------- 根项目:'gradledemo'+--- 项目'app'+ --- 项目'mylib'+- -- 项目'test'+--- 项目'实用程序

输出所有子项目

//输出根项目的build.gradle中的所有子项目。 //输出所有子项目。 getAllSubprojects()def getAllSubprojects(){ getSubprojects().each { project - println '---- ${project.name} ' } }//输出----App----mylib----Test- - -公用事业

获取父项目的名称

//获取根项目名称,根项目内部调用返回null,子项目下调用打印父项目名称getParentProjectName()def getParentProjectName(){ def project=getParent() if (project !=null ){ println '父项目名称为:' + project.name }else { println '父项目不存在' }} 获取根项目名称

getRootPro()def getRootPro(){ println '根项目的名称是:' + getRootProject().name}//运行./gradlew clean, 输出:根项目的名称是:gradledemo ,根项目

/** * 根项目下可以配置所有子项目,如下代码所示* 子项目的build.gradle文件中可以配置的任何内容* 可以在以下代码中配置*/project ('app') { apply plugin: 'com.android.application' group 'com.zhj' 版本'1.0.0' 依赖项{ } android { }}project('mylib') { apply plugin: 'com.android.library 'group 'com.zhj 依赖项' version '1.1.1' { }} 为所有项目提供统一配置

/** * 配置当前节点项目及其所有子项目。 * 例如配置所有项目的组为'com.zhj' */allprojects { repositories { google() jcenter() } group 'com.zhj '}/测试组属性配置为/allprojects println 'The group for the test project is: ' + project('test').group//输出测试项目的组是: com.zhj 只配置子项目

/** * 与所有项目不同,子项目不包括当前项目。仅包含子项目。 */subprojects { 项目project - if(project.hasProperty('com.android.library')){ //编译库项目上传库gradle中的项目管理主要是管理子项目,可以同时获取所有子项目。您还可以获得有关根项目或父项目的信息。同时,一个项目对应一个build.gradle文件,build.gradle文件也是判断是否是项目的标志。项目是一个非常重要的概念。下面是官方文档

https://docs.gradle.org/current/userguide/userguide.html#using_existing_gradle_builds

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢