gradle · 2020-10-31 0

Gradle中的project

一、Project

Gradle 的执行流程

Initialization 初始化阶段 (解析整个工程中的所有Project,构建所有的Project对应的project对象)
Configuration 配置阶段 (解析所有projects对象中的task,构建好所有task的拓扑图(有向无环图))
Execution 执行阶段(执行具体的task及其依赖的task)
settings.gradle 用于解析生成Project

build.gradle 用于判断是不是一个Project

每个Project都是在build.gradle中去配置和管理的,这些build.gradle最终会被Gradle编译为Project字节码

1.编写settings.gradle

rootProject.name = 'gradle-project'
include 'gradle-project-1'
include 'gradle-project-2'
include 'gradle-project-3'

2.创建目录结构

可以通过 gradle wrapper 生成 gradle 目录下文件,gradle-wrapper.properties 用于指定gradle版本

gradle

3.使用gradle projects查看

使用 gradle projects 命名查看project

gradle-projects

二、Project相关api

可以查看org.gradle.api.Project的属性和方法

  1. Project里含有一个容器TaskContainer接口.用与创建,存取及管理所有的Task
  2. Project里含有一个容器ConfigurationContainer接口,来管理对应的项目配置
  3. Project里含有一个DependencyHandler接口用与管理项目的依赖
  4. Project里含有一个RepositoryHandler接口用来注册和管理依赖所需的Repository

1.project属性

可用同通过ext属性定义额外的属性

属性名 作用
group 当前项目的组名
name 当前项目的名字
version 当前项目的版本号,默认值:unspecified
parent 当前项目的父项目
project 当前项目的实例
allprojects 当前项目及其所有子项目的集合
rootProject 当前项目层次结构中的根项目
subprojects 当前项目的子项目集
defaultTasks 当前项目的默认任务的名字集当前构建没有提供任务名时会执行这些默认任务
tasks 当前项目的任务集
buildDir 当前项目的编译目录(自动生成)默认值 porjectDir/build
path 当前项目的路径(绝对路径)
logger 当前项目的日志器,可以用来在 build 文件中写日志

2.project方法

可以通过groovy语法定义额外的方法

方法名 作用
apply 应用插件或脚本
task 定义一个任务
project 获取指定项目的 project 对象
allprojects 配置当前项目以及它的每个子项目
subprojects 配置当前项目的所有子项目
beforeEvaluate 添加一个闭包,她会在项目开始评估前立即执行
afterEvaluate 可以添加一个闭包,它会在项目完成评估后立即执行。当执行属于该项目的构建文件时,会通知此类监听器。
configure 通过闭包配置对象集合
file 解析文件
hasProperty 判断当前项目有没有指定属性
setProperty 给属性设置值
findProperty 找特定属性,返回它的值,如果没有,返回null
copy 拷贝特定文件