Gradle学习第一篇——自定义Gradle插件

news2025/4/10 3:57:41

纸上得来终觉浅,绝知此事要躬行。

自定义Gradle插件有三种方法,各有优劣处,同类博客文章很多但是有的语法已经过时了,笔者运行环境 Android Studio Dolphin && gradle-7.4-bin

文章目录

  • 第一种 build script (单文件生效)
  • 第二种 buildSrc project (同项目生效)
  • 第三种 standalone project (项目内外都生效)
  • 参考文档

第一种 build script (单文件生效)

在这里插入图片描述

apply plugin: GreetingPlugin

class GreetingPlugin implements Plugin<Project> {
    void apply(Project project) {
        println 'Hello This is custom gradle plugin! by app'
    }
}

就是如此简单,但是缺点是这个插件只能在这个build script使用,完全无复用的能力,其他Module要是想用的话必须拷贝一份

第二种 buildSrc project (同项目生效)

在当前目录下创建buildSrc目录,创建完毕之后Sync一下
在这里插入图片描述

 mkdir -p buildSrc/src/main/java 
 
 cd buildSrc  
 
 touch build.gradle

build.gradle 中复制如下代码
在这里插入图片描述

plugins {
    id 'java-gradle-plugin' // Java Gradle Plugin
}

gradlePlugin {
    plugins {
        modularPlugin {
            // Plugin id.
            id = 'com.gerry.learn'
            // Plugin implementation.
            implementationClass = 'com.gerry.learn.GreetingPlugin'
        }
    }
}
package com.gerry.learn;

import org.gradle.api.Plugin;
import org.gradle.api.Project;

public class GreetingPlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        System.out.println(" Hello This is custom gradle plugin by buildSrc");
    }
}

配置完成去App中运行测试一下
在这里插入图片描述
这种稍微麻烦点,但是可以做到同项目内plugin复用了。

第三种 standalone project (项目内外都生效)

这个和第二种有些地方是类似的
首先创建一个Library Module
在这里插入图片描述
剩下的步骤和 Mac搭建本地Maven仓库For Android Studio 中的上传Maven仓库类似

libplugin的build.gradle文件如下


plugins {
    id 'java-gradle-plugin' // 自动化生成 plugin id 使用
    id 'maven-publish' // 上传aar到maven使用
}

gradlePlugin {
    plugins {
        modularPlugin {
            // Plugin id.
            id = 'com.gerry.learn'
            // Plugin implementation.
            implementationClass = 'com.gerry.learn.GreetingPlugin'
        }
    }
}


afterEvaluate {
    publishing {
        //发布的 jar 包配置
        publications {
            release(MavenPublication) {
                groupId = 'com.gerry.learn'
                artifactId = 'GreetingPlugin'
                version = '1.0.0'
            }
        }
        //仓库地址配置
        repositories {
            maven {
                // test, upload local maven repository
                //url = "file:" + new File(project.rootProject.rootDir, "local_test_repo").path
                url = uri('../localMavenRepository/snapshot')
            }
        }
    }
}

在这里插入图片描述

class GreetPlugin : Plugin<Project> {
    override fun apply(p0: Project) {
        println("Hello This custom plugin fom standalone project !")
    }
}

在这里插入图片描述
这样就把一个plugin发布完了,接下来看下项目中该如何使用

参考文档

Developing Custom Gradle Plugins 官方文档永不过时~
Gradle 系列(2)手把手带你自定义 Gradle 插件
Android 自定义Gradle插件的3种方式

令人头疼的Crash问题

Gradle 上传aar到Maven

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux目录操作

一、常用权限操作 权限操作实战 1、创建文件&#xff0c;设置其用户组 root用户创建新文件love.txt 命令&#xff1a;echo I Love you > love.txt 查看文件love.txt的用户及用户组 将其用户组改为lzy用户组 命令&#xff1a;chgrp lzy love.txt 查看文件love.txt的用…

System Verilog断言

简介 断言通常被称为序列监视器或者序列检验器&#xff0c;是对设计应当如何执行特定行为的描述&#xff0c;是一种嵌入设计检查。如果检查的属性&#xff08;property&#xff09;不是我们期望的表现&#xff0c;那么在我们期望事件序列的故障上会产生警告或者错误提示。 断言…

SpringMVC:整合SSM框架

一、大致框架 1.建立数据库&#xff0c;并导入数据 create database cjgl; create table books( bookID int(10) not null auto_increment comment 书id, bookName varchar(100) not null comment 书名, bookCounts int(11) not null comment 数量, detail varchar(200) no…

C. Planar Reflections

题目如下&#xff1a; 思路 or 题解 我们可以通过图解发现&#xff1a;可以递推找到答案了 我们约定&#xff1a;dp[i][j]dp[i][j]dp[i][j] 第 iii 个板, 衰变年龄为jjj 的答案是 dp[i][j]dp[i][j]dp[i][j] 我们通过图解找到转移方程&#xff1a; dp[i][j]dp[i−1][j]dp[n−i]…

[附源码]Python计算机毕业设计Django时间管理软件app

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数据结构【红黑树模拟实现】

目录 红黑树&#xff1a;基于AVL树改进 红黑树的性质 红黑树基本结构 insert基本结构 新增节点的默认颜色为红色 节点性质总结 情况一: cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u存在且为红 情况二: cur为红&#xff0c;p为红&#xff0c;g为黑&#xf…

基于web的电子图书管理系统

目  录 中文摘要&#xff08;关键词&#xff09; 1 英文摘要&#xff08;关键词&#xff09; 1 前 言 2 1概述 3 1.1系统研究背景 3 1.2系统研究意义 3 2 需求分析 4 2.1可行性分析 4 2.2功能需求分析 4 2.3非功能需求分析 5 3系统分析 6 3.1系统业务流程分析 6 3.2系统数据…

web前端课程设计 HTML+CSS+JavaScript旅游风景云南城市网页设计与实现 web前端课程设计代码 web课程设计 HTML网页制作代码

&#x1f468;‍&#x1f393;静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计&#x1f469;‍&#x1f393;&#xff0c;一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

狂神说多线程学习笔记

一、线程简介 1、多任务 现实中太多这样同时做多件事情的例子了&#xff0c;看起来是多个任务都在做&#xff0c;其实本质上我们的大脑在同一时间依旧只做了一件事情。 2、多线程 原来是一条路&#xff0c;慢慢因为车太多了&#xff0c;道路阻塞&#xff0c;效率极低。为了提…

【信管2.6】项目可研(二)详细可行性研究

项目可研&#xff08;二&#xff09;详细可行性研究在实际的整个项目可研的过程中&#xff0c;机会研究和初步可行性研究有可能不会出现&#xff0c;但详细可行性研究这个步骤是不可缺少的。比如说一些升级改造的项目可能需要初步和详细的可行性研究&#xff0c;而一些小项目可…

阿里P8大牛带你深入理解SpringCloud微服务构建文档

前言 蓦然回首自己做开发已经十年了&#xff0c;这十年中我获得了很多&#xff0c;技术能力、培训、出国、大公司的经历&#xff0c;还有很多很好的朋友。但再仔细一想&#xff0c;这十年中我至少浪费了五年时间&#xff0c;这五年可以足够让自己成长为一个优秀的程序员&#…

嵌入式开发学习之--RCC(下)

文章目录前言一、使用HSE二、使用HSI三、代码编写总结前言 这一篇记录一下时钟的具体实验。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、使用HSE 一般情况下&#xff0c;我们都是使用 HSE&#xff0c;然后 HSE 经过 PLL 倍频之后作为系统时钟…

WRF模式、WRF-SOLAR、WRF-UCM、人工智能气象、FLEXPART、CMIP6数据处理、LEAP模型

1、《高精度气象模拟软件 WRF 实践技术及案例应用》 时间&#xff1a;12月17-18日、24-25日、31日 2、《双碳目标下太阳辐射预报模式【WRF-SOLAR】及改进技术在气象、农林、电力等相关领域中的实践应用 》 时间&#xff1a;12月10-11日、17日-18日 3、《第三期Python人工智能在…

TGK-Planner无人机运动规划算法解读

高速移动无人机的在线路径规划一直是学界当前研究的难点&#xff0c;引起了大量机器人行业的研究人员与工程师的关注。然而无人机的计算资源有限&#xff0c;要在短时间内规划出一条安全可执行的路径&#xff0c;这就要求无人机的运动规划算法必须轻型而有效。本文将介绍一种无…

Java项目:SSM企业OA管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含管理员与普通员工两种角色&#xff0c; 管理员角色包含以下功能&#xff1a; 岗位管理,部门管理,工龄奖金管理,员工管理,考勤管理,…

Linux下Jenkins服务器安装与使用

CentOS7环境下安装Jenkins​ JDK安装详细见&#xff1a; JDK安装详细步骤 ​ jenkins安装 Jenkins源添加 **注意&#xff1a; ** 问题1、在添加Jenkins源时会出现以下错误 这是由于没有安装wget软件包的原因 进行wget软件包的安装&#xff1a; yum -y install wget 问题2…

HTML网页设计制作——初音动漫(6页) dreamweaver作业静态HTML网页设计模板

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

市面上跑步耳机哪种好、2023年最适合跑步用的耳机排名

这几年&#xff0c;越来越多人注意到了身体健康的重要性&#xff0c;而随着今年飞盘、露营、刘畊宏女孩的兴起&#xff0c;再到卡塔尔世界杯&#xff0c;不断刺激大众运动、健身的热情&#xff0c;面对全民运动热潮&#xff0c;作为普通人应该如何保持激情&#xff0c;实现身心…

Pr:导出设置之编码设置

视频 VIDEO设置因所选导出格式而异。每种格式都有独特的要求&#xff0c;这些要求决定了哪些设置可用。以导出 H.264 文件格式为例&#xff0c;下面给出有关编码设置 Encoding Settings的选项及说明。性能Performance--硬件加速Hardware Encoding利用系统的可用 GPU 硬件&#…