zoukankan      html  css  js  c++  java
  • 【项目构建工具】 Gradle笔记2

    一.Gradle执行流程

      1.Gradle的执行流程(生命周期)主要是三个阶段:

        初始化阶段:解析整个工程中所有Project,构建所有的Project对应的project对象

        配置阶段:解析所有的projects对象中的task,构件号所有的task的拓扑图

        执行阶段:执行具体的task及其依赖task

      2.Gradle执行流程的监听:

        在settings.gradle中打印一句话(Gradle初始化阶段会执行settings.gradle文件)

    println "初始化阶段开始执行"

        在build.gradle中配置监听,这几个监听本质还是回调方法,添加代码如下

    //配置阶段开始前进行监听
    this.beforeEvaluate {//等效与this.gradle.beforeProject
        println "配置阶段执行前"//注意:直接这样配置是不会生效的,因为Project还没配置好,但它可以在父工程的中配置对子模块阶段的监听
     }
    //配置阶段完成后进行监听
    this.afterEvaluate {//等效与this.gradle.afterProject println
      
    "配置阶段完成后"
    }
    //执行阶段完毕后进行监听
    this.gradle.buildFinished {
      println
    "执行阶段完毕后"
    }

        测试:在控制台中输入gradle clean,输出如下

        

    二.Project

      1.对于Gradle来说,Gradle项目中的父工程是一个Project,但每一个子模块也是一个Project(只要有build.gradle文件,都算是Project),可以输入gradle projects查看整个项目中的Project。或者编写如下代码,并执行Gradle任务

    //获取全部Project
    this.getProjects()
    def getProjects(){
        println this.getAllprojects()//获取当前模块及其子模块的Project
    }

      2.父Project对子Project的操作,例如在父Project中的build.gradle中配置子Project的组名,版本号,依赖等(如果在父Project中配置了,子Project中不需要再配置)

    project('gradle-study-child'){
        group ''
        version ''
        dependencies{
            
        }
    }

      3.如果需要配置父Project及所有子Project,可以使用allproject,如果只需配置所有的子Project,可以使用subproject

    allproject{
        //略
    }

       4.文件属性

        在gradle中,可以通过apply from导入外部文件配置,除此以外,还有很多与文件相关的操作,

        1.获取路径

    println getProjectDir().absolutePath//获取Project路径
    println getBuildDir().absolutePath//获取build文件夹路径
    println getRootDir().absolutePath//获取工程根路路径

        2.获取文件

    def findFile(String filePath){
        def file = file(filePath)//获取指定路径的文件
        return file.text//返回文件内容
    }

        3.拷贝文件

    copy{
        from file('test.txt')//源文件路径
        into getBuildDir()//拷贝后的路径
        rename{}//重命名拷贝后的文件
    }

        4.依赖相关

    buildscript {
        //配置工程的仓库地址
        repositories {
            mavenCentral()//使用maven中央仓库
            mavenLocal()//使用maven本地仓库
            //更多方法可以查看API文档
        }
        //配置工程的插件依赖地址
        dependencies {}
    }

        更多Project相关内容可以在API上查看

    三.Task

      1.Task是gradle构建脚本的一个运行单元,可以通过gradle tasks查看Project中的全部Task

      2.Task的创建

    task mytask(){//括号中可以添加Task分组,描述信息等
        println "创建一个Task"
    }

      3.Task的执行阶段

        在Task中,使用doFirst和doLast可以控制Task执行流程,前者在Task中最早执行,后者则是最后执行(两者都执行于Gradle执行阶段)

      4.Task依赖

    task otherTask(dependsOn: [mytask]){//Task可以依赖其他Task
        println "新的Task执行了"
    }

        注意:被依赖的Task会在该Task之前执行一次(该方法可用于决定各个Task执行的先后顺序)

  • 相关阅读:
    函数对象与闭包函数
    day15
    应用在tomcat下的四种部署方式(原创)
    Servlet的四种映射模式
    背景框代码
    RabbitMQ 示例-生产者-消费者-direct-topic-fanout
    idea 设置自动生成注释
    cSpring Boot整合RabbitMQ详细教程
    Windows下RabbitMQ安装及配置
    Threadlocal线程本地变量理解
  • 原文地址:https://www.cnblogs.com/ywb-articles/p/10987145.html
Copyright © 2011-2022 走看看