Gradle 生命周期

Gradle distribution:https://services.gradle.org/distributions

Gradle Wrapper:https://docs.gradle.org/current/userguide/gradle_wrapper.html

GRADLE_USER_HOME 默认在 ~/.gradle,可通过 -g 指定:./gradlew -g /mnt/d/GradleHome -x test bootJar

Gradle 只会和 Project 目录与 GRADLE_USER_HOME 目录打交道

Gradle Daemon:与 Maven 不同,Gradle 在第一次启动时会启动 client 和 daemon,再次启动就只启动 client,加快构建速度

 

Gradle 生命周期

  1. 为项目创建 Settings 实例,根据 Settings 实例确定有哪些模块,为每个模块创建一个 Project 实例
  2. 对 Project 实例进行配置
  3. 执行

gradle Lifecycle hook:https://docs.gradle.org/current/dsl/org.gradle.api.invocation.Gradle.html#org.gradle.api.invocation.Gradle:addListener(java.lang.Object)

https://juejin.cn/collection/6888978202560036877

 

Gradle 中最小任务单元是 task,task 之间可以进行依赖

task('hw1') { println it.toString() }
task('hw2', { println it.toString() })
//getTasks().register('helloworld') {
tasks.register('helloworld') {
    println it.toString()
    println 'helloworld'

    doLast { println 'doLast' }
    doFirst { println 'doFirst' }
}

 

插件:https://docs.gradle.org/current/userguide/plugins.html

class MyPlugin implements Plugin<Project> {
    @Override
    void apply(Project target) {
        println 'MyPlugin'
    }
}
//apply Plugin: MyPlugin
apply([Plugin: MyPlugin])

buildSrc:在构建 src 项目前会先构建 buildSrc 项目,并把 jar 添加到 buildscript 的依赖中。类似 Maven 中 install 后给其他项目使用

buildscript:在构建 src 项目过程(构建过程,和业务应用使用的依赖无关)中可以使用的插件

引入插件过程:以 apply plugin: 'org.springframework.boot' 为例

  1. 通过 org.springframework.boot 在仓库找到 jar
  2. 把 jar 下载到本地后在 META-INF\gradle-plugins 目录下找到 org.springframework.boot.properties,内容是 implementation-class=org.springframework.boot.gradle.plugin.SpringBootPlugin
  3. 加载 org.springframework.boot.gradle.plugin.SpringBootPlugin 并实例化,调用其 apply 方法

 


https://docs.gradle.org/current/userguide/build_lifecycle.html

https://www.bilibili.com/video/BV1b4411G7cX

https://www.bilibili.com/video/BV1DE411Z7nt

posted @ 2020-08-25 18:27  江湖小小白  阅读(1316)  评论(0)    收藏  举报