如何編寫獨立外掛
要使用 java 建立自定義獨立 Gradle 外掛(你也可以使用 Groovy),你必須建立如下結構:
plugin
|-- build.gradle
|-- settings.gradle
|-- src
|-- main
| |-- java
| |-- resources
| |-- META-INF
| |-- gradle-plugins
|-- test
設定 gradle 配置
在 build.gradle
檔案中,你可以定義專案。
apply plugin: 'java'
apply plugin: 'maven'
dependencies {
compile gradleApi()
}
java
外掛將用於編寫 java 程式碼。
gradleApi()
依賴項將為我們提供建立 Gradle 外掛所需的所有方法和屬性。
在 settings.gradle
檔案中:
rootProject.name = 'myplugin'
它將在 Maven 中定義工件 ID 。
如果外掛目錄中不存在 settings.gradle
檔案,則預設值將是目錄的名稱。
建立外掛
在實現 Plugin
介面的 src/main/java/org/sample/MyPlugin.java
中定義一個類。
import org.gradle.api.Plugin;
import org.gradle.api.Project;
public class MyPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getTasks().create("myTask", MyTask.class);
}
}
定義擴充套件 DefaultTask
類的任務:
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
public class MyTask extends DefaultTask {
@TaskAction
public void myTask() {
System.out.println("Hello World");
}
}
外掛類宣告
在 META-INF/gradle-plugins
資料夾中,你必須建立一個屬性檔案,用於定義標識外掛實現類的 implementation-class
屬性。
在 META-INF/gradle-plugins/testplugin.properties
implementation-class=org.sample.MyPlugin.java
請注意,屬性檔名與外掛 ID 匹配。
如何構建和釋出它
更改 build.gradle
檔案,新增一些資訊以在 maven 倉庫中上傳外掛:
apply plugin: 'java'
apply plugin: 'maven'
dependencies {
compile gradleApi()
}
repositories {
jcenter()
}
group = 'org.sample'
version = '1.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: mavenLocal().url)
}
}
}
你可以使用以下命令構建 Gradle 外掛並將其釋出到 plugin/build.gradle
檔案中定義的 Maven 儲存庫。
$ ./gradlew clean uploadArchives
如何使用它
要在專案的 build.gradle
中使用外掛,請執行以下操作:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath group: 'org.sample', // Defined in the build.gradle of the plugin
name: 'myplugin', // Defined by the rootProject.name
version: '1.0'
}
}
apply plugin: 'testplugin' // Defined by the properties filename
然後你可以使用以下方法呼叫任務:
$ ./gradlew myTask