自定义gradle插件并且发布到本地仓库
转载请标明出处,维权必究:http://77blogs.com/?p=189
一、在工程上新建一个Module。
二、删除其余不必要的文件,最终目录结构如下:

注意:由于我用的是kotlin语言,所以用的是java目录,java语言也是用java目录,如果用的是groovy语言,那么就用groovy目录。
src/main/resources/META-INF/gradle-plugins目录下定义插件声明,*.properties文件的文件名就是插件名称
比如
而文件的内容implementation-class后面跟着的是插件类的全类名。
三、module的gradle引入相关的依赖以及插件
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'kotlin'
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
google()
jcenter()
mavenLocal()
}
dependencies {
implementation gradleApi()
implementation localGroovy()
implementation "commons-io:commons-io:2.6"
implementation 'com.android.tools.build:gradle:4.0.1'
implementation 'com.android.tools.build:gradle-api:4.0.1'
implementation 'org.ow2.asm:asm:7.1'
implementation 'org.ow2.asm:asm-util:7.1'
implementation 'org.ow2.asm:asm-commons:7.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.32"
}
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.plugin'
pom.artifactId = 'double-click'
pom.version = '1.0.26'
//发布到本地仓库
repository(url: uri('../repo'))
}
}
}
由于我需要用到asm与transform相关的api,所以引入了相关的依赖。
四、编写插件代码,此处不展开说了。
五、发布到本地仓库:
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.xxx.plugin'
pom.artifactId = 'double-click'
pom.version = '1.0.26'
//发布到本地仓库
repository(url: uri('../repo'))
}
}
}
- pom.groupId:groundId自己定义,一般为包名
- pom.artifactId:artifactId自己定义
- pom.version:版本号
- repository(url: uri('../repo')):仓库地址,为本地项目的repo文件夹,注意../不要写错,这是代表gradle所在目录的上一层目录。
六、引用
1、项目的app.gradle里引入插件:
apply plugin: 'com.xxxx.double-click'
该名称为第二部里面所讲的插件名称。
2、project.gradle中引入地址:
buildscript {
ext.kotlin_version = "1.4.32"
repositories {
google()
jcenter()
maven {
//配置本地插件目录
url uri('./repo')
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
classpath "com.xxxxx.plugin:double-click:1.0.26"
}
}
这里主要有两部分:
(1)配置本地插件所在的目录,注意要与发布到本地仓库时候写的地址对应上。
maven {
//配置本地插件目录
url uri('./repo')
}
(2)声明,写法就是发送到本地仓库时候所写的groupId:artifactId:version
classpath "com.xxxxx.plugin:double-click:1.0.26"
自定义gradle插件并且发布到本地仓库的更多相关文章
- 手把手带你自定义 Gradle 插件 —— Gradle 系列(2)
请点赞加关注,你的支持对我非常重要,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友 ...
- Gradle的构建过程都不会?带你全面了解Android如何自定义Gradle 插件
目前 Android 工程的默认构建工具为 Gradle,我们在构建 APK 的时候往往会执行 ./gradlew assembleDebug 这样的命令.. 那么这个命令到底代表着什么含义呢?命令的 ...
- maven使用deploy发布到本地仓库
使用maven可以方便的开发好的jar包发布到本地仓库中,方便其他项目依赖使用,在pom.xml文件中添加如下的配置: <distributionManagement> <repos ...
- maven 发布到本地仓库
1.maven打包命令 maven package命令只是将你需要打包的项目打包到项目的class文件夹下面,并没有发布到本地仓库或者私服上面,现在多模块开发的打包一般依赖私服或者 本地仓库,因此,我 ...
- SpringCloudAlibaba通过jib插件打包发布到docker仓库
序言 在SpringBoot项目部署的时候,我了解到了Jib插件的强大,这个插件可以快速构建镜像发布到我们的镜像仓库当中去.于是我打算在毕设当中加上这个功能,并且整合到github actions中去 ...
- 自定义gradle插件
重点学习https://www.jianshu.com/p/804d79415258 https://blog.csdn.net/l2show/article/details/53925543 htt ...
- maven发布到本地仓库
<distributionManagement> <repository> <id>localRepository</id> <url>fi ...
- Gradle实战:发布aar包到maven仓库
查看原文:http://blog.csdn.net/u010818425/article/details/52441711 Gradle实战系列文章: <Gradle基本知识点与常用配置> ...
- AS 自定义 Gradle plugin 插件 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Gradle 使用maven本地仓库 带来的思考
Gradle 使用maven本地仓库 带来的思考 本篇主要探究一下 在使用Gradle 的时候一般会配置 maven 的本地仓库的,那是不是Gradle 可以直接使用 maven本地仓库的jar呢 ? ...
随机推荐
- js对象方法大全
JavaScript中Object构造函数的方法 Object构造函数的方法节 Object.assign() 通过复制一个或多个对象来创建一个新的对象. Object.create() 使用指定的原 ...
- Locust 界面简介(非使用级)
一.认识Locust 1.简介 Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在 ...
- Centos7.x 更换Jenkins构建目录
原由:最近因为原来的Jenkins构建目录,已经要满了,想着更换下构建目录,此篇文件简单介绍下更换过程. 注:此文章可能仅适用于我个人,仅供参考.如有其他办法,欢迎评论指教. 查了几种方法,最终选为使 ...
- Django, urls的参数name的demo
Django的路由变化 遇到需要修改路由的需求,特别记录一下 项目开始 django-admin startproject sandboxOA. # 外部文件夹可以改变名字, '.'的意思是上一级不需 ...
- 2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法。 宏使用如下: #[derive(Builder)] pub stru
2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法. 宏使用如下: #[derive(Builder)] pub stru ...
- 2022-04-12:给定一个字符串形式的数,比如“3421“或者“-8731“, 如果这个数不在-32768~32767范围上,那么返回“NODATA“, 如果这个数在-32768~32767范围上
2022-04-12:给定一个字符串形式的数,比如"3421"或者"-8731", 如果这个数不在-32768~32767范围上,那么返回"NODAT ...
- 【RocketMQ】NameServer总结
NameServer是一个注册中心,提供服务注册和服务发现的功能.NameServer可以集群部署,集群中每个节点都是对等的关系(没有像ZooKeeper那样在集群中选举出一个Master节点),节点 ...
- 代码随想录算法训练营Day35 贪心算法
代码随想录算法训练营 代码随想录算法训练营Day35 贪心算法| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零 题目链接:860.柠檬水找零 在柠 ...
- ODOO学习网址推荐
Odoo官文文档: https://www.odoo.com/zh_cn/page/docs http://www.odoo.com/documentation/8.0/ Odoo中文文档推荐: ht ...
- 【lwip】15-NETCONN接口
前言 终于到接口层了. 原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/17442931.html 框架描述 前面我们已经学完了,都知道raw接口了,其实 ...