自己写一个Gradle插件

  1. 创建Gradle工程

    apply plugin: ‘groovy’ //如果你使用java开发,可以换成java
    
    apply plugin: ‘maven’ //依赖管理;上传你的jar到仓库中
    
    version = 1.0
    group = 'com.zjzhai'
    archivesBaseName = 'jshint-gradle'
    repositories.mavenCentral()
    
  2. 加入依赖

    dependencies {
        compile(
                gradleApi() 
        )
    }
    
  3. 实现gradle插件类

        class JshintPlugin implements Plugin<Project>{
    
            void apply(Project project) {
                  // 插件逻辑.....
    
                  // 读取配置。jshint为例子
                  project.extensions.create("jshint", JshintConfig)
    
                 project.task('jshint') << {
    
                    // task逻辑
                    // println 打印日志
    
                    if (hasError) {
                         //抛出异常,既构建失败
                        throw new RuntimeException("Jshint Failure!")
                    }
                }
            }
        }
    
    `project.task('jshint')`中的`jshint`指的是这个插件下的task名。
    
  4. 定义插件入口

    src/main/resources/META-INF/gradle-plugins/中添加一个properties文件:jshint-gradle.properties文件。jshint-gradle为插件名。使用此插件时就是apple plugin 'jshint-gradle'

    在文件中定义入口:'implementation-class=com.zjzhai.gradle.jshint.JshintPlugin'

  5. 打包上传

    uploadArchives {
        repositories.mavenDeployer {
            repository(url: 'file:/Users/xxxx/.m2/repository')
        }
    }
    

    url指定仓库地址

    执行命令上传:gradle uploadArchives

  6. 使用插件

    apply plugin: 'jshint-gradle'
    jshint {
        inputDirs = file('src/main/resources').path
        includes = ["asset/*.js"]
        excludes = ["**/compase/*.js"]
    }
    

    路径使用的是ant path语法

    可以看到这里的jshintproject.extensions.create("jshint", JshintConfig)的对应。而JshintConfig类是一个Bean:

        class JshintConfig {
            def inputDirs
            def includes
            def excludes
    
        }
    

    使用时命令:gradle jshint

Jshint Gradle Plugin源码地址

你可能感兴趣的:(gradle,gradle插件)