如何编写独立插件
要使用 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