gradle学习2

本文详细介绍了Gradle的学习,涵盖了生命周期、获取Project、配置与设置、扩展、文件操作、依赖管理、Task创建与配置、输入输出、sourceSets以及自定义插件等内容。在生命周期中,讨论了初始化、配置和执行阶段,而在Task部分,讲解了如何创建、配置Task及其依赖关系。同时,还探讨了如何在不同Project间共享扩展函数和配置文件。
摘要由CSDN通过智能技术生成

gradle 学习

gradle生命周期

生命周期

初始化阶段=》配置阶段=》执行阶段

生命周期回调

![在这里插入图片描述](https://img-blog.csdnimg.cn/2在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

获取project

获取所有project

this.projects()
def projects() {
   

    this.getAllprojects().eachWithIndex {
    project, index ->
        if (index ==0 ) {
   
            println "root = ${project.name}"
        } else {
   
            println "sub ${project.name}"
        }
    }
}


在这里插入图片描述

获取子project
this.subProject()
def subProject() {
   
    this.getSubprojects().eachWithIndex {
    Project entry, int i ->
        println "sub project ${entry.name}"
    }
}

在这里插入图片描述

得到父的project

方式一,该方式不能在父project调用会报错

在这里插入图片描述

this.getParentProject()

def getParentProject() {
   
    def name = this.getParent().name
    println "parent = ${name}"
}

在这里插入图片描述

方式二,该方式可以在父project调用

this.rootProject()

def rootProject() {
   
    def name = this.rootProject.name
    println "root name ${name}"
}

在这里插入图片描述

对某一project进行设置

添加plugin、dependencies
project('app') {
    Project project ->

    apply {
    ObjectConfigurationAction objectConfigurationAction ->
//        objectConfigurationAction.plugin('com.android.library')
    }


    project.afterEvaluate {
   
        dependencies {
     DependencyHandler dependencyHandler ->
            dependencyHandler.add('implementation', 'com.google.code.gson:gson:2.6.2')
        }
    }
}
    apply {
    ObjectConfigurationAction objectConfigurationAction ->
        // objectConfigurationAction.plugin('com.android.library')
    }

apply是追加插件,如果已经存在com.android.application,如继续追加com.android.library插件会报错

在这里插入图片描述
在这里插入图片描述

配置当前工程和所有子工程

allprojects {
   
    group 'com.answer'
    version '1.0.0-release'
}
println "aaa" + project("app").group

在这里插入图片描述

配置子project,不包括当前project

subprojects {
    Project project ->
    if(project.getPlugins().hasPlugin('com.android.library')) {
   
        apply from: '../publishToMaven.gradle'
    }
}

判断子project是不是library,如果是,就增加发不到maven仓库功能

扩展

在根工程使用ext
ext {
   
    compileSdkVersion = 29
    libAndroidx = 'androidx.appcompat:appcompat:1.2.0'
}

子工程使用根工程的扩展函数

方式一

android {
   
    compileSdkVersion this.rootProject.compileSdkVersion
    buildToolsVersion "29.0.2"

方式二

因为是继承关系,所以可以省略掉rootProject

android {
   
    compileSdkVersion this.compileSdkVersion
    buildToolsVersion "29.0.2"
导入文件使用扩展函数

创建一个common.gradle文件
在这里插入图片描述
在跟工程进行引用

在这里插入图片描述

在子工程进行使用

在这里插入图片描述

使用属性

在这里插入图片描述

在这里插入图片描述

文件操作

文件路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查找文件

相对于当前的project工程开始查找

println buildContent("common.gradle")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值