自定义插件有三种方式
Build script
在 build.gradle 脚本中直接编写插件。插件被包含在构建脚本中,会自动编译,简单方便。但该插件不可再其他构建脚本中使用,不具备可重用性。
class GreetingPlugin implements Plugin {
void apply(Project project) {
project.task('hello') {
doLast {
println 'Hello from the GreetingPlugin'
}
}
}
}
// Apply the plugin
apply plugin: GreetingPlugin
可以通过 project.extensions
让插件具有可配置性
class GreetingPluginExtension {
String message
String greeter
}
class GreetingPlugin implements Plugin {
void apply(Project project) {
def extension = project.extensions.create('greeting', GreetingPluginExtension)
project.task('hello') {
doLast {
println "${extension.message} from ${extension.greeter}"
}
}
}
}
apply plugin: GreetingPlugin
// Configure the extension using a DSL block
greeting {
message = 'Hi'
greeter = 'Gradle'
}
buildSrc project
Standalone project
可以为插件单独创建一个项目,发布成 JAR 供其他项目使用。独立项目中可以包含多个插件或多个相关的任务类。
创建项目
IDEA -> New Module -> module name(wiki)
build.gradle
plugins {
id 'java'
id 'maven-publish'
}
group 'com.hooda'
version '1.0.0'
repositories {
mavenCentral()
}
dependencies {
implementation gradleApi()
testCompile group: 'junit', name: 'junit', version: '4.12'
}
publishing {
publications {
wiki(MavenPublication) {
groupId "com.hooda"
artifactId "wiki"
version "1.0.0"
from components.java
}
}
}
maven-publish 支持将插件发布到本地 maven 仓库,方便后续的调试
java -> com.hooda.WikiPlugin
public class WikiPlugin implements Plugin {
@Override
public void apply(Project project) {
System.out.println("execute wiki plugin");
}
}
resources -> META-INF\gradle-plugins\wiki.properties
implementation-class=com.hooda.WikiPlugin
选择 Gradle -> wiki(module) -> Tasks -> publishing -> publishWikiPublicationToMavenLocal 将插件发布到本地 Maven 仓库,后续在其他模块中就可以引入该插件应用。
应用插件
IDEA -> New Module -> module name(wikiapi)
build.gradle
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath "com.hooda:wiki:1.0.0"
}
}
group 'com.hooda'
version '1.0.0'
repositories {
mavenCentral()
}
apply plugin: 'java'
apply plugin: 'wiki'
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
插件调试
开启远程调试:
Run -> Edit Configurations -> +(Add New Configuration) -> Remote
应用远程调试:
Gradle -> api(应用模块)-> Tasks -> build -> builld -> 右键 -> Create 'xx [build]
在 VM opitions 中添加,注意:suspend=y
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
将会在 Run Configurations 中新增一个 build,双击 就可以开始调试了
参考资料
Developing Custom Gradle Plugins