Gradle 簡介
Gradle是一個基於JVM的構建工具,它提供了:
- 像Ant一樣,通用靈活的構建工具
- 可以切換的,基於約定的構建框架
- 強大的多工程構建支持
- 基於Apache Ivy的強大的依賴管理
- 支持maven, Ivy倉庫
- 支持傳遞性依賴管理,而不需要遠程倉庫或者是pom.xml和ivy.xml配置文件。
- 對Ant的任務做了很好的集成
- 基於Groovy,build腳本使用Groovy編寫
- 有廣泛的領域模型支持構建
Gradle插件結構
自定義gradle插件時,既可以使用groovy語言,也可以使用Java或者Kotlin語言。一般我都是使用groovy語言。
自定義插件的目錄結構如下:
plugin-project
└── src
└── main
| ├── groovy
| | └── com
| | └── package
| | └── name
| └── resources
| └── META-INF
| └── gradle-plugins
|_ build.gradle
由上述插件結構可知,自定義插件大致可分爲三個部分。groovy代碼目錄,resources/META-INF目錄和build.gradle配置文件。
build.gradle
apply plugin: 'groovy'
apply plugin: 'maven'
group 'com.opensource.gradle'
version '1.0.0'
dependencies {
//gradle sdk
implementation gradleApi()
//groovy sdk
implementation localGroovy()
}
META-INF/gradle-plugins
在META-INF/gradle-plugins 目錄下添加一個屬性文件,主要用來使得Gradle找到該插件。
com.opensource.MyCustomPlugin.properties
implementation-class=com.opensource.gradle.plugin.MyCustomPlugin
注: 表示插件 ID 爲 com.opensource.MyCustomPlugin 的插件所對應的實現類爲 com.opensource.gradle.plugin.MyCustomPlugin
com.opensource.MyCustomPlugin 就是其他地方 apply plugin:
時使用的名稱
Groovy代碼 目錄
爲了創建Gradle插件,我們必須創建一個實現Plugin
接口的類。當我們將自定義的插件應用到項目時,Gradle就會創建這個類的實例,並調用這個類的apply()
方法。而project作爲該方法的參數,因此插件可以使用project的配置。下面我們在groovy目錄下創建CustomPlugin.groovy。
import org.gradle.api.Plugin
import org.gradle.api.Project
class MyCustomPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println("apply MyCustomPlugin")
}
}
發佈插件
只需要在build.gradle文件中添加uploadArchives task就可以將插件發佈到本地。
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
repository(url: System.getenv("REPO_URL_RELEASE")) {
authentication(userName: System.getenv("REPO_USER_NAME"), password: System.getenv("REPO_PASSWORD"))
}
}
}
}
}
執行uA任務發佈插件到倉庫
gradle clean build uA
-
REPO_URL_RELEASE 爲maven私庫地址
-
REPO_USER_NAME 爲私庫用戶名
-
REPO_PASSWORD 爲私庫密碼
根據自己的環境信息,這裏替換爲指定的值
應用插件
在需要使用該插件的項目中的build.gradle 文件中,添加如下代碼
apply plugin: 'com.opensource.MyCustomPlugin'