自己写一个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

猜你喜欢

转载自blog.csdn.net/qq_36838191/article/details/81016491