这是一个基本的、独立的、基于 Java 的 Gradle 插件以及使其工作的步骤:
- 确保 Gradle 1.6 或更高版本并且已安装 Java JDK
- 使用指示的目录结构在下面创建这些文件
- 将目录更改为
<projectRoot>/plugin
目录
- 执行插件构建:
$ gradle uploadArchives
这个(非常重要的)步骤编译 Java 代码并将其放入本地 Maven 存储库 (../repo)。
- 现在通过将目录更改为来执行消费者脚本
<projectRoot>/consumer
- 执行依赖插件的脚本:
$ gradle checkitout
Java 类
projectRoot/plugin/src/main/java/org/joefernandez/gradle/MyJavaPlugin.java
package org.joefernandez.gradle;
import org.gradle.api.Project;
import org.gradle.api.Plugin;
public class MyJavaPlugin implements Plugin<Project> {
@Override
public void apply(Project target) {
target.task("javaTask");
}
}
projectRoot/plugin/src/main/java/org/joefernandez/gradle/MyJavaTask.java
package org.joefernandez.gradle;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
public class MyJavaTask extends DefaultTask {
@TaskAction
public void javaTask() {
System.out.println("Hello from MyJavaTask");
}
}
插件类声明
projectRoot/plugin/src/main/resources/META-INF/gradle-plugins/test-plugin.properties
implementation-class=org.joefernandez.gradle.MyJavaPlugin
插件构建脚本
注意uploadArchives任务:您必须运行此任务以使插件可用于使用者脚本。
projectRoot/plugin/build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
apply plugin: 'maven'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
group = 'org.joefernandez'
version = '1.0-SNAPSHOT'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
插件设置
projectRoot/plugin/settings.gradle
rootProject.name = 'MyJavaPlugin'
根脚本
项目根/build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
消费者脚本
projectRoot/consumer/build.gradle
buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'org.joefernandez',
name: 'MyJavaPlugin',
version: '1.0-SNAPSHOT'
}
}
apply plugin: 'test-plugin'
task checkitout(type: org.joefernandez.gradle.MyJavaTask) {
println("running consumer task!")
}