Gradle 学习之插件介绍

news/2024/5/20 4:28:38 标签: gradle, android, 自动化构建, 插件, 应用插件

目录

一、Gradle 设计介绍

Gradle 的扩展性十分强,它本身提供基本的概念和整体的核心框架,其他的具体场景逻辑,都是以插件的形式进行扩展

Gradle 本身就内置了很多常用插件,可以满足我们大部分的需求,但是也有一些常用的插件没有内置,这就需要我们自己去扩展实现,然后应用到 Gradle 当中去

二、Gradle 插件介绍

1. 二进制插件

二进制插件就是实现了 org.gradle.api.Plugin 接口的插件

应用:

// 法一:java 是 Java 插件的 plugin id
// Gradle 自带的核心插件都有一个容易记的短名,是唯一的
apply plugin:'java'
// 法二:
apply plugin:org.gradle.api.plugins.JavaPlugin
// 法三:
apply plugin:JavaPlugin

2. 脚本插件

脚本插件,严格来说不能算是一个插件,而是脚本。应用脚本插件,其本质就是把这个脚本加载进来,这个脚本可以是本地的,也可以是网络的

应用:

apply from:'version.gradle'

意义:脚本文件模块化的基础,可以按照功能模块把我们的脚本进行拆分,然后在主脚本文件引用,方便复用与归类,化整为零

3.应用第三方发布的插件

使用第三方发布的 jar 的二进制插件,一般需要配置对应的仓库和类路径

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.3"
    }
}
// 使用 plugins DSL 应用插件
plugins {
    id 'com.android.application'
}

但是如果是使用 plugins DSL 应用插件,且插件已经被托管在 https://plugins.gradle.org/ 网站上,就可以不用在 buildscript 里配置 classpath 依赖了,直接使用 plugins 就可以应用了,这里以目前网址上显示第一个插件为例:com.hcl.security.appscan

  • 使用 plugins DSL 方式
plugins {
  id "com.hcl.security.appscan" version "1.0.6"
}
  • 使用传统的应用方式
buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.hcl.security:appscan-gradle-plugin:1.0.6"
  }
}

apply plugin: "com.hcl.security.appscan"

整理学习自飞雪无情大佬的《Android Gradle 权威指南》和互联网资料


http://www.niftyadmin.cn/n/1252344.html

相关文章

微任务与宏任务

微任务与宏任务 宏任务包括:setTimeout setInterval Ajax DOM事件微任务:Promise async/await注意:微任务比宏任务的执行时间要早下面请看例子 console.log(100);setTimeout(()>{console.log(200); })setTimeout(()>{console.log(201…

如何一句话激怒程序员

前言原本安静的办公室总是可以因为某个人的一两句话而变的热闹起来,进而发生或纯技术、或纯愤怒、或两者皆是的争吵……1、前端没有任何技术含量这是之前的一个后端的同事说的,当时小生内心已经在质疑他的智商了,不过嘴上说的是:你…

js数据类型判断

js数据类型判断一共有四种方法 typeof、instanceof、constructor、Object.prototype.toString.call() 下面我来为大家一一的介绍一下 1、typeof 基本数据类型中:Number,String,Boolean,undefined 以及引用数据类型中Function …

Kotlin 学习之被我一直用错的“return@forEachIndexed/return@forEach”

目录一、集合遍历二、样例问题场景三、原因四、如何实现 Kotlin forEach 与 forEachIndexed 循环中的 break 与 continue五、心得一、集合遍历 1. Java 集合遍历方式 在 Java 中我们在遍历一个集合的时候常常使用的是以下两种方式&#xff1a; for (int i 0; i < list.s…

面 5 家挂 5 家,现在找工作这么难了吗?

今年&#xff0c;由于疫情的影响&#xff0c;很多互联网企业都在缩减招聘成本。作为前端工程师&#xff0c;市场上的人才本来就很多&#xff0c;而现在的求职局面又完全是企业在挑人的状态。小丽原本一心想进大厂&#xff0c;但是在这样的情况下&#xff0c;她也有些力不从心了…

js的内存泄漏与垃圾回收机制

垃圾回收机制 浏览器的js具有自动垃圾回收机制&#xff08;GC&#xff09;&#xff0c;执行环境会管理代码在执行中所使用的内存&#xff0c;垃圾回收器会定期寻找不再使用的变量&#xff0c;释放其内存&#xff0c;垃圾回收器会按照时间间隔周期性的执行 变量的死亡 全局作…

Gradle 学习之如何配置依赖

在提倡分享与开源的时代&#xff0c;各式各样的“工具”层出不穷&#xff0c;免去了很多重头再来的冗余工作&#xff0c;我们只要利用好合适的“工具”就可以快速&#xff0c;便捷的实现目标功能&#xff0c;那么 Gradle 是如何帮助找到这些“工具”的呢&#xff1f;重点其实就…

是什么尤大选择放弃Webpack?——vite 原理解析

本文同步在掘金博主:「橙红年代」个人博客shymean.com上。掘金原文链接: https://juejin.im/post/5ea2361de51d454714428b44前些天尤大在Vue 3.0 beta直播中提到了一个vite的工具&#xff0c;其描述是&#xff1a;针对Vue单页面组件的无打包开发服务器&#xff0c;可以直接在浏…