項目 & 任務 Gradle 的一切都是基於項目和任務的。 構建由一個或多個項目組成。項目的概念很抽象,它取決於你要用Gradle 做什麼 。項目可以是 一個 Jar 庫或者一個 web 程式。也可以是一個 zip 壓縮包,也可以是將項目部署到生產環境等等; 一個項目是由一個或多個任務組成的;任務是 ...
項目 & 任務
Gradle 的一切都是基於項目和任務的。
構建由一個或多個項目組成。項目的概念很抽象,它取決於你要用Gradle 做什麼 。項目可以是 一個 Jar 庫或者一個 web 程式。也可以是一個 zip 壓縮包,也可以是將項目部署到生產環境等等;
一個項目是由一個或多個任務組成的;任務是構建工作的原子單位,最小的工作單元。例如:編譯位元組碼,創建 jar 。
Hello World
創建一個簡單的任務,輸出 Hello World!.
Groovy
task hello{
doLast {
println 'Hello World.'
}
}
Kotlin
tasks.register("hello"){
doLast {
println ("Hello World.")
}
}
輸入命令 運行該任務
gradle hello
創建一個簡單的構建
新建一個目錄
使用 init 命令創建構建項目
Gradle 現在支持兩種--Kotlin DSL 和 Groovy DSL .預設是 基於Groovy的,如果要使用 Kotlin 可以 使用 --dsl kotlin
gradle init --dsl kotlin
會生成如下目錄
其中 .gitigonre 是 git 忽略文件;.gradle 是 gradle 的一些信息。
需要我們關註的是下麵這些文件
├── cradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── build.gradle.kts
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
- warpper 是 Gradle Wrapper 使用的目錄
- gradle-wrapper.jar 是執行 Gradle Wrapper 使用的
- gradle-wrapper.properties 是 配置 Gradle Wrapper 屬性的
- build.gradle.kts 用於配置當前項目的Gradle構建腳本
- gradlew 是 Unix 機器上的 執行腳本
- gradlew.bat 是 window 上的執行腳本
- settings.gradle.kts 是 用於配置Gradle構建的Gradle設置腳本
創建任務
Gradle提供了通過Groovy或基於kotlin的DSL創建和配置任務的api。項目包含一組任務,每個任務執行一些基本操作。
Gradle提供了一個任務庫,我們可以在自己的項目中配置這些任務。例如,有一個核心類型的 Copy 任務,它可以複製文件。
下麵我們就配置這個 任務來使用一下。
創建一個目錄 src
在 src 下創建一個文件名稱任意,例如 myFile.txt。添加任意內容,例如 Hello World!
在 配置腳本(build.gradle.kts) 添加 一個 Copy 類型的 copy 任務,從 src 目錄複製到 dest 目錄
Gradle 在執行時會自動創建 dest 目錄。
Kotlin
tasks.register<Copy>("copy"){
description = "Copies sources to the dest directory"
group = "Custom"
from("src")
into("dest")
}
Groovy
task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
from "src"
into "dest"
}
description 和 group 都是可選的,可以隨便你定義;也是可以省略的;
執行 copy 任務
gradle copy
檢查裡面的 myFile.txt 是否複製完成。
使用插件
Gradle 提供了大量的插件,在 Gradle 插件站 可以查到
今天使用 一個 base 插件 結合它的核心類型 Zip 任務,實現打包壓縮包的任務。
使用 base 插件
Kotlin
plugins {
id("base")
}
... rest of the build file ...
Groovy
plugins {
id "base"
}
... rest of the build file ...
創建一個 zip 任務,擴展自 核心類型 Zip
Kotlin
tasks.create<Zip>("zip") {
description = "Archives sources in a zip file"
group = "Archive"
from("src")
setArchiveName("basic-demo-1.0.zip")
}
Groovy
task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
from "src"
setArchiveName "basic-demo-1.0.zip"
}
執行 zip
gradle zip
至此,一個簡單的構建完成了。
分析構建過程
Gradle 提供了一個基於 web的構建視圖——構建掃描
在執行時 使用 --scan 選項或者明確使用構建掃描插件都可以免費的在 https://scans.gradle.com 創建一個掃描視圖分析
gradle zip --scan
在同一服務條款後會直接發送到 構建掃描的平臺,複製下麵的連接打開即可。
打開之後會有詳細的項目構建分析
End