小编典典
这是一个基本的,独立的,基于Java的Gradle插件,以及使其工作的步骤:
确保Gradle 1.6或更高版本并安装了Java JDK
使用指定的目录结构在下面创建这些文件
将/plugin目录更改为目录
执行插件构建:$ gradle uploadArchives此步骤(非常重要)将编译Java代码并将其放入本地Maven存储库(../repo)中。
现在,通过将目录更改为 /consumer
执行依赖于插件的脚本: $ gradle checkitout
Java类
projectRoot /插件/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 {
@Override
public void apply(Project target) {
target.task("javaTask");
}
}
projectRoot /插件/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 /插件/src/main/resources/META-INF/gradle-plugins/test-
plugin.properties
implementation-class=org.joefernandez.gradle.MyJavaPlugin
插件构建脚本
请注意 uploadArchives 任务:您必须运行此任务以使插件可用于使用者脚本。
projectRoot /插件/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 /插件/settings.gradle
rootProject.name = 'MyJavaPlugin'
根脚本
projectRoot / build.gradle
apply plugin: 'java'
dependencies {
compile gradleApi()
}
消费者脚本
projectRoot /消费者/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!")
}
2020-10-18