Gradle自定义插件发布到Maven
个人博客
Gradle自定义插件发布到Maven
前言
日常开发中,我们可能会用到一些别人开发的插件,通常我们是这样引入插件的:
在项目根目录下的build.gradle增加配置:
buildscript {
repositories {
//...
maven { url 'https://dl.bintray.com/milovetingting/maven' }
//...
}
dependencies {
//...
classpath 'com.wangyz.plugins:ShellPlugin:1.0.0'
//...
}
}
allprojects {
repositories {
//...
maven { url 'https://dl.bintray.com/milovetingting/maven' }
//...
}
}
在需要应用插件的模块的build.gradle中增加配置:
apply plugin: 'com.wangyz.plugins.ShellPlugin'
sync工程后,就可以愉快地应用插件了。
那么,如果我们自己有开发好的插件,也想提供给别人使用,要怎样操作呢?这里就需要把开发的插件上传到公共的仓库中,别人才可以引用到。本文以Maven为例,介绍自定义插件发布到Maven的流程。
注册帐号
可以通过bintray来发布插件到Maven仓库。首先需要注册帐号,注册地址:https://bintray.com/signup/oss
可以直接注册或者通过Github帐号注册。
需要注意的一点,邮箱地址不能为QQ邮箱,否则注册无法成功。
新建仓库
注册成功后,登录进去bintray,开始创建仓库
点击Add New Repository,进入新建仓库配置页面
Name项可以输入maven,Type选择Maven。
插件发布
新建好仓库后,就可以配置Android Studio项目,以便发布插件到远程仓库。
在Project级别的build.gradle文件的dependencies节点下增加依赖
dependencies {
...
classpath 'com.novoda:bintray-release:0.8.0'
}
在要发布的library模块下的build.gradle中,增加以下配置
apply plugin: 'com.novoda.bintray-release'
publish {
//注册bintray时的用户名
userOrg = 'milovetingting'
//要发布的插件的分组名,可以自己定义
groupId = 'com.wangyz.plugins'
//要发布的插件的标识
artifactId = 'ShellPlugin'
//要发布的插件版本
publishVersion = '1.0.0'
//描述
desc = 'a plugin to shell apk'
//对应的网址,如果项目代码放在github上,可以填写github中的项目地址
website = 'https://github.com/milovetingting/Shell'
}
配置好后,同步项目。
在Android Studio中的Terminal面板中,输入以下命令开始发布:
gradlew clean build bintrayUpload -PbintrayUser=UserName -PbintrayKey=Key -PdryRun=false
其中PbintrayUser为bintray中注册的用户名,PbintrayKey就是bintray为我们分配的key
查看key的方法:
点击Edit Profile
点击左侧的API Key,这里需要输入密码
可以点击show查看key或者直接点击右侧的复制按钮复制
正确执行上面的命令后,就可以在bintray中看到我们发布的插件
点击刚才创建的仓库maven,可以看到我们自己定义的插件已经发布了
这个时候,就可以像引用其它插件一样来引用我们自己发布的插件,只不过我们还需要指定maven的具体地址,因为我们还没有把自己的插件发布到jcenter
//项目根目录下的build.gradle
buildscript {
repositories {
//...
maven { url 'https://dl.bintray.com/milovetingting/maven' }
//...
}
dependencies {
//...
classpath 'com.wangyz.plugins:ShellPlugin:1.0.0'
//...
}
}
allprojects {
repositories {
//...
maven { url 'https://dl.bintray.com/milovetingting/maven' }
//...
}
}
其中的https://dl.bintray.com/milovetingting/maven
格式为:https://dl.bintray.com/用户名/仓库名 ,应用插件时就会从指定的仓库下载
发布到Jcenter
如果想不使用具体的maven地址,那么就需要发布到jcenter。
进入我们刚才发布的插件的详情页,点击右侧的Add to Jcenter,在弹出的窗口中点击确定后,就会提交发布的申请,在审核通过后,就可以不指定具体的maven地址,直接引用插件了。审核一般几个小时就会通过。
个人主页:http://www.milovetingting.cn