个人博客:

http://www.milovetingting.cn

Gradle插件

插件的作用

把插件应用到项目中,插件会扩展项目的功能,帮助在项目构建过程中做很多事情。

1、可以添加任务到项目中,帮助完成测试、编译、打包等。

2、可以添加依赖配置到项目中,可以通过它们配置项目在构建过程中需要的依赖,如编译时依赖的第三方库等。

3、可以向项目中现有的对象类型添加新的扩展属性、方法等。

4、可以对项目进行一些约定,如应用Java插件后,约定src/main/java目录是我们的源代码存在位置,在编译的时候也是编译这个目录下的Java源代码文件。

如何应用一个插件

插件的应用都是通过Project.apply()方法完成的。

应用二进制插件

二进制插件就是实现了org.gradle.api.Plugin接口的插件,它们可以有Plugin id。

  1. apply plugin:'java'

上面的语句,其中'java'就是Java插件的plugin id,它是唯一的。其实它对应的类型是org.gradle.api.plugins.JavaPlugin,所以通过该类型,我们也可以应用这个插件:

  1. apply plugin:org.gradle.api.plugins.JavaPlugin

又因为包org.gradle.api.plugins是默认导入的,所以可以去掉包名直接写成:

  1. apply plugin:JavaPlugin

应用脚本插件

build.gradle

  1. apply from:'version.gradle'
  2. task task1{
  3. println "版本是:${versionName},版本号是:${versionCode}"
  4. }

version.gradle

  1. ext{
  2. versionName = '1.0'
  3. versionCode = 1
  4. }

apply方法的其他用法

Project.apply()方法有三种使用方法:

  1. void apply(Map<String,?> options);
  2. void apply(Closure closure);
  3. void apply(Action<? super ObjectConfigurationAction> action);

闭包的方式如下:

  1. apply{
  2. plugin 'java'
  3. }

Action方式:

  1. apply (new Action<ObjectConfigurationAction>){
  2. @Override
  3. void execute(ObjectConfigurationAction objectConfigurationAction){
  4. objectConfigurationAction.plugin('java')
  5. }
  6. }

应用第三方发布的插件

第三方发布的jar的二进制插件,我们在应用的时候,必须要先在buildscript{}里配置其classpath才能使用。

  1. buildscript{
  2. repositories{
  3. jcenter()
  4. }
  5. dependencies{
  6. classpath 'com.android.tools.build:gradle:1.5.0'
  7. }
  8. }

buildscript{}是一个构建项目前,为项目进行前期准备和初始化相关配置依赖的地方,配置好所需的依赖,就可以应用插件了

  1. apply plugin:'com.android.application'

使用plugins DSL应用插件

  1. plugins{
  2. id 'java'
  3. }

更多好用的插件

可以在https://plugins.gradle.org/ 上找到,也可以在github上找。

自定义插件

自定义插件必须实现Plugin接口,这个接口只有一个apply方法,该方法在插件被应用的时候执行。

定义在build脚本文件里:

  1. apply plugin:CustomPlugin
  2. class CustomPlugin implements Plugin<Project>{
  3. void apply(Project project){
  4. project.task('customTask').doLast{
  5. println '这是一个通过自定义插件方式创建的任务。'
  6. }
  7. }
  8. }

这种只能在自己项目里用,如果想开发一个独立的插件给所有想用的人,则需要创建单独工程来开发自定义插件了。

新建一个Android Module

清空Module的build.gradle内容,添加以下内容,配置开发所需的依赖:

  1. apply plugin: 'groovy'
  2. dependencies {
  3. implementation gradleApi()
  4. implementation localGroovy()
  5. }

然后实现依赖类:

删除src/main目录下的所有文件,新建一个groovy文件夹,在这个文件夹新建包,如com.wangyz.plugins,然后在这个文件夹下,新建一个类,如:CustomPlugin.groovy,内容如下:

  1. package com.wangyz.plugins
  2. import org.gradle.api.Plugin
  3. import org.gradle.api.Project
  4. class CustomPlugin implements Plugin<Project> {
  5. @Override
  6. void apply(Project project) {
  7. project.task('CustomTask').doLast {
  8. println("这是一个通过自定义插件方式创建的任务")
  9. }
  10. }
  11. }

在src/main文件夹下新建resources文件夹,然后在这个文件夹中新建META-INF文件夹,然后在这个文件夹下新建gradle-plugins文件夹,然后新建com.wangyz.plugins.customplugin.properties文件,文件名就是其它应用依赖的名。内容如下:

  1. implementation-class=com.wangyz.plugins.CustomPlugin

写好后,我们配置发布:

在Module的build.gradle文件中,添加以下内容:

  1. apply plugin: 'maven-publish'
  2. publishing {
  3. publications {
  4. mavenJava(MavenPublication) {
  5. groupId 'com.wangyz.plugins'
  6. artifactId 'customplugin'
  7. version '1.0.0'
  8. from components.java
  9. }
  10. }
  11. }
  12. publishing {
  13. repositories {
  14. maven {
  15. // change to point to your repo, e.g. http://my.org/repo
  16. url uri('/home/wangyz/repos')
  17. }
  18. }
  19. }

然后在控制台,输入以下指令:

  1. ./gradlew publish

发布成功后,配置引用:

在需要引入依赖的工程根目录下的build.gradle添加以下内容:

  1. buildscript {
  2. repositories {
  3. maven {
  4. //local maven repo path
  5. url uri('/home/wangyz/repos')
  6. }
  7. }
  8. dependencies {
  9. //这里配置为发布时填写的:groupId:artifactId:version
  10. classpath 'com.wangyz.plugins:customplugin:1.0.0'
  11. }
  12. }

在App的build.gradle下添加以下内容:

  1. //这里的配置为:
  2. apply plugin: 'com.wangyz.plugins.customplugin'

【Gradle】Gradle插件的更多相关文章

  1. [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。

    使用Gradle的插件EnIDE build的时候,输出的中文总是乱码.解决办法:在EnIDE的设置里面,设置JVM options GRADLE_OPTS 为:-Dfile.encoding=UTF ...

  2. AS 自定义 Gradle plugin 插件 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. gradle ssh 插件

    org.hidetake.ssh Gradle SSH Plugin is a Gradle plugin which provides remote command execution and fi ...

  4. com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题

    在使用Android Studio 这个IDE时,出现com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题 可能的原因就是网速不好或者依 ...

  5. Android gradle 自定义插件

    Gradle 的插件有三种打包方式: 构建脚本:插件逻辑写在 build.gradle 中,适用于逻辑简单的任务,但是该方式实现的插件在该构建脚本之外是不可见的,只能用于当前脚本. buildSrc项 ...

  6. [Gradle] Gradle 构建 android 应用常见问题解决指南

    转载地址:http://www.cnblogs.com/youxilua/p/3348162.html 1: 使用最新的gradle android插件 以前我们写的时候会这么写 dependenci ...

  7. gradle/gradle plugin/Android studio关系

    gradle - 构建工具,存储于Users/stono/.gradle/wrapper/dists Adroid Studio- IDE Gradle plugin - 在AS中使用Gradle的插 ...

  8. Gradle | Gradle项目无法导入依赖包

    Gradle | Gradle项目无法导入依赖包 背景 今天使用idea导入一个Gradle项目,使用 gradle build构建成功,但是项目还是无法正常导入依赖包,显示错误如下: 解决方案 后来 ...

  9. gradle入门(1-7)eclipse和gradle集成插件的安装和使用

    一.安装gradle插件:buildship 1.安装插件 gradle默认的本地缓存库在c盘user目录下的.gradle文件夹下,安装好gradle后,可以添加环境变量GRADLE_USER_HO ...

  10. gradle 自定义插件 下载配置文件

    1.新建Gradle项目: 2.建立src/main/groovy目录,并添加如下代码: ConfigPlugin.groovy package com.wemall.config import or ...

随机推荐

  1. 因特尔CPU上TM和R标识的区别

    TM是英文trademark的缩写,TM标志并非对商标起到保护作用,它与R不同,TM表示的是该商标已经向国家商标局提出申请,并且国家商标局也已经下发了<受理通知书>,进入了异议期,这样就可 ...

  2. BIM工程信息管理系统-详细设计

    详细设计说明书 1引言 1.1编写目的 编写详细设计说明书的目的就是为程序员写出实际的程序代码提供依据.它是软件详细设计阶段所有任务和所有相关人员所需的参考资料. 1.2背景 说明: a.  软件名称 ...

  3. java之java.io.File的相关方法

    java.io.File的使用. IO原理及流的分类. 文件流:FileInputStream.FileOutputStream.FileReader.FileWriter 缓存流:BufferedI ...

  4. Linux Zookeeper 安装, 带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 面试必备+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并发 ...

  5. dubbo 获取不到本地地址,返回 127.0.0.1

    2019-08-14 12:29:09.609  WARN 1079 --- [           main] org.apache.dubbo.config.AbstractConfig   :  ...

  6. 防止sql注入的最好方式

    避免 SQL injection 攻击的传统方法之一是,把它作为一个输入合法性检查的问题来处理,只接受列在白名单中的字符,或者识别并避免那些列在黑名单中的恶意数据.白名单方法是一种非常有效方法,它可以 ...

  7. jquery.i18n 网站呈现各国语言

    在做网站的时候可能会遇到不同语言切换的问题,实现的方法有很多种,本篇文章按照 js 加载的方法的来实现. 应用到的 js 文件: jquery.i18n.properties.js jquery.js ...

  8. Java网络爬虫 Jsoup

    一.Jsoup介绍 我们抓取到页面之后,还需要对页面进行解析.可以使用字符串处理工具解析页面,也可以使用正则表达式,但是这些方法都会带来很大的开发成本,所以我们需要使用一款专门解析html页面的技术. ...

  9. Cocos Creator | 炮弹发射效果模拟

    一.预览效果 ​ 二.设置物理世界属性: 1.打开物理系统: cc.director.getPhysicsManager().enabled = true; 2. 配置重力加速度: cc.direct ...

  10. IDEA项目更改项目名

    点击File,如图: