美文网首页
Gradle - Custom Plugins

Gradle - Custom Plugins

作者: Zeppelin421 | 来源:发表于2023-02-18 07:38 被阅读0次

    自定义插件有三种方式

    Build script

    在 build.gradle 脚本中直接编写插件。插件被包含在构建脚本中,会自动编译,简单方便。但该插件不可再其他构建脚本中使用,不具备可重用性。

    class GreetingPlugin implements Plugin<Project> {
        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<Project> {
        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<Project> {
        @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

    相关文章

      网友评论

          本文标题:Gradle - Custom Plugins

          本文链接:https://www.haomeiwen.com/subject/vuumkdtx.html