Gradle是一個基於Apache Ant和Apache Maven概念的 項目自動化構建工具 。 它使用一種基於Groovy的特定領域語言(DSL)來聲明項目配置,真正起作用的是Plugin,Gradle預設提供了許多常用的Plugin,如構建Java項目的Plugin、War、Ear等。 Gra ...
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化構建工具。 它使用一種基於Groovy的特定領域語言(DSL)來聲明項目配置,真正起作用的是Plugin,Gradle預設提供了許多常用的Plugin,如構建Java項目的Plugin、War、Ear等。
Gradle面向Java應用為主,支持語言:Java、Groovy、Kotlin和Scala。
1、Gradle本身的領域對象:Project、Task。
- Project
- Project本質上說是具有多個Task的容器;
- Project為Task提供了執行上下文,所有的Plugin要麼向Project中添加用於配置的Property,要麼向Project添加不同的Task。
- Project本質上說是具有多個Task的容器;
- Task
- 一個Task表示一個邏輯上較為獨立的執行過程,比如編譯Java源代碼、拷貝文件、打包jar,設置可以是執行一個系統命令或者調用Ant。
- 所有的Task都存放在Project的TaskContainer中。
- 一個Task可以讀取和設置Project的Property以完成特定操作。
- Task可以顯示聲明類型,如Copy
- Task之間可以存在依賴關係,使用dependsOn聲明
task taskA(dependsOn: taskB) { //do something }
- Gradle預設提供的Task包含:查看Project的Properties(properties)、顯示當前定義的所有Task(tasks)、 dependencies、projects
- 一個Task表示一個邏輯上較為獨立的執行過程,比如編譯Java源代碼、拷貝文件、打包jar,設置可以是執行一個系統命令或者調用Ant。
備註:預設情況下,Gradle將當前目錄下的build.gradle作為項目的構建文件。
2、Task
2.1 Task創建
(1)調用Project的task()方法創建Task;
(2)通過TaskContainer的create()方法創建Task:tasks.create(){}
(3)聲明Task之間的依賴關係:定義時聲明或者定義Task後再聲明依賴;
(4)配置Task的Property:定義時配置、閉包方式配置、調用Task的configure()方法完成設置。
2.2 Task執行
(1)Gradle是一種聲明式的構建工具。執行Task分為兩個階段:配置階段、實際執行階段。
(2)配置階段:讀取所有build.gradle文件的所有內容來配置Project和Task,如設置Property、處理Task之間的依賴關係。
3、Project
3.1 Gradle預設下為Project定義的Property:
- project:Project本身
- name:Project的名字
- path:Project的絕對路徑
- description:Project的描述信息
- buildDir:構建結果存放路徑
- version:版本號
3.2 自定義Project的Property
- 在build.gradle中定義Property:通過ext.XXX定義,可以直接訪問
- 通過命令後參數設置Property:通過命令行-PXXX傳入
- 通過JWM系統參數定義Property:通過命令行-Dorg.gradle.project.XXX傳入
- 通過環境變數設置Property:定義環境變數的時候,每一個Property需要以ORG_GRADLE_PROJECT_XXX定義,如export ORG_GRADLE_PROJECT_XXX=“XXX”。
4、Plugin相關的概念
(1)gradle的每一個sourceSet都包含有一個名字、一個名為java(Java源文件集合)的Property、一個名為resources(資源文件集合)的Property。 2(3)Gradle會自動為每一個新創建的source set創建相應的Task:compile
5、Gradle依賴管理
Gradle的依賴倉庫配置:repositories,支持Maven、Ivy、本地文件。
每一組依賴稱為一個Configuration。