Gradle之插件(三)

版本

  1. gradle-4.8.1

插件

  1. 在Gradle中使用一个插件之前,需要应用(apply)它。插件的apply是通过Project.apply()方法来完成的

  2. 二进制插件: 即实现了org.gradle.api.Plugin接口的插件,可以有plugin id。二进制插件一般都是打包在一个jar里独立发布,比如自定义的插件,在发布的时候可以指定plugin id,这个plugin id一般是一个全限定名称,类似于包名,这样防止plugin id重复

    1. 一般写法
    apply plugin: 'java'
    
    2. 完整写法
    'java'是java插件的plugin id,它是唯一的,对应的类型是org.gradle.api.plugins.JavaPlugin。所以也可以这样写
    
    apply plugin: org.gradle.api.plugins.JavaPlugin 
    
    3. 简短写法
    因为org.gradle.api.plugins包是默认导入的,所以可以这样写
    
    apply plugin: JavaPlugin
    
  3. 应用脚本插件,其实就是把脚本从其他地方加载进来(可以是本地或者网络上,网络需要使用HTTP URL)

    apply from: rootProject.getRootDir().getAbsolutePath() + "/ext.gradle"
    
  4. apply的三个方法

    void apply(Closure closure);
    void apply(Action<? super ObjectConfigurationAction> action);
    void apply(Map<String, ?> options);
    
    闭包方式的使用
    apply {
        plugin 'java'
    }
    
    
  5. 如果要应用第三方发布的jar插件,在应用前必须先在buildscript里配置classpath才能使用。buildscript是为了在构建前准备和初始化相关配置依赖的地方,配置好所需的依赖,才可以应用插件,否则会提示找不到插件

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:2.1.1.RELEASE")
        }
    }
    apply plugin: 'org.springframework.boot'
    
  6. Gradle2.1之后可以使用plugins DSL这种新的方式来应用插件

    1. 内置插件,放在build.gradle开始处
    plugins{
        id 'java'
    }
    
    2. 三方插件,前提是插件已经托管在https://plugins.gradle.org/上
    plugins {
        id 'com.jfrog.bintray' version '0.4.1'
    }
    
    
  7. 如果是多项目构建,可能希望将插件应用于构建中的部分或全部子项目,而不是应用于根项目或主项目。
    plugins{}块的默认行为是立即解析并应用插件。但是,使用apply false语法告诉Gradle不要将插件应用于当前项目,然后在子项目块中使用apply plugin:plugin id

    1. settings.gradle 配置
    
    include 'helloA'
    include 'helloB'
    include 'goodbyeC'
    
    2. build.gradle 配置
    
    plugins {
      id "org.gradle.sample.hello" version "1.0.0" apply false
      id "org.gradle.sample.goodbye" version "1.0.0" apply false
    }
    
    subprojects { subproject ->
        if (subproject.name.startsWith("hello")) {
            apply plugin: 'org.gradle.sample.hello'
        }
        if (subproject.name.startsWith("goodbye")) {
            apply plugin: 'org.gradle.sample.goodbye'
        }
    }
    
  8. 插件管理,pluginManagement {}块可能只出现在settings.gradle文件中,它必须是文件中的第一个块,或者出现在初始化脚本中。

    1. 在settings.gradle中配置。默认情况下plugins {} DSL 从https://plugins.gradle.org/下载,可以自定义插件私有仓库地址
    
    pluginManagement {
        resolutionStrategy {
        }
        repositories {
           maven {
              url 'maven-repo'
            }
            gradlePluginPortal()
            ivy {
              url 'ivy-repo'
            }
        }
    }
    
    2. 在init.gradle中配置
    
    settingsEvaluated { settings ->
        settings.pluginManagement {
            resolutionStrategy {
            }
            repositories {
            }
        }
    }
    

常用插件

  1. 查看项目依赖报告

    // 执行htmlDependencyReport 任务查看依赖报告
    apply plugin: 'project-report'
    
  2. 检查项目中多个module的gradle依赖配置是否存在冲突,插件地址 https://github.com/bihe0832/Gradle-Dependencies-Check

    buildscript {
      repositories {
        maven {
          url "https://plugins.gradle.org/m2/"
        }
      }
      dependencies {
        classpath "gradle.plugin.com.bihe0832:Gradle-Dependencies-Check-Plugin:1.0.9"
      }
    }
    
    apply plugin: "com.bihe0832.gradleDependenciesCheck"
    
    
    GradleDependenciesCheckConfig {
        /**
         * 检查结果提示类型:
         *  1 以warning形式在命令行提示
         *  2 直接编辑报错,并提示错误
         *  运行checkGradleDependencies 任务检查版本
         */
        showResultType = 1
    }
       
    
  3. 可视化显示依赖图,插件地址https://github.com/vanniktech/gradle-dependency-graph-generator-plugin

    buildscript {
      repositories {
        maven {
          url "https://plugins.gradle.org/m2/"
        }
      }
      dependencies {
        classpath "gradle.plugin.com.vanniktech:gradle-dependency-graph-generator-plugin:0.5.0"
      }
    }
    
    apply plugin: "com.vanniktech.dependency.graph.generator"
    
    
    运行generateDependencyGraph任务
    
  4. 依赖管理插件https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/

  5. idea插件

     apply plugin: 'idea'
         idea {
            module {
                downloadJavadoc = true
                downloadSources = true
            }
        }
    idea {
        module {
            downloadJavadoc = true
            downloadSources = true
        }
    }
    
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值