个人博客

http://www.milovetingting.cn

Gradle自定义插件发布到Maven

前言

日常开发中,我们可能会用到一些别人开发的插件,通常我们是这样引入插件的

在项目根目录下的build.gradle增加配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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中增加配置:

1
apply plugin: 'com.wangyz.plugins.ShellPlugin'

sync工程后,就可以愉快地应用插件了。

那么,如果我们自己有开发好的插件,也想提供给别人使用,要怎样操作呢?这里就需要把开发的插件上传到公共的仓库中,别人才可以引用到。本文以Maven为例,介绍自定义插件发布到Maven的流程。

注册帐号

可以通过bintray来发布插件到Maven仓库。首先需要注册帐号,注册地址:https://bintray.com/signup/oss

可以直接注册或者通过Github帐号注册。

需要注意的一点,邮箱地址不能为QQ邮箱,否则注册无法成功。

注册

新建仓库

注册成功后,登录进去bintray,开始创建仓库

新建仓库

点击Add New Repository,进入新建仓库配置页面

新建仓库2

Name项可以输入maven,Type选择Maven。

插件发布

新建好仓库后,就可以配置Android Studio项目,以便发布插件到远程仓库。

在要发布的library模块下的build.gradle中,增加以下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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面板中,输入以下命令开始发布:

1
gradlew clean build bintrayUpload -PbintrayUser=UserName -PbintrayKey=Key -PdryRun=false

其中PbintrayUser为bintray中注册的用户名,PbintrayKey就是bintray为我们分配的key

查看key的方法:

点击Edit Profile

查看key

点击左侧的API Key,这里输入密码

查看key2

可以点击show查看key或者直接点击右侧的复制按钮复制

查看key3

正确执行上面的命令后,就可以在bintray中看到我们发布的插件

查看插件

点击刚才创建的仓库maven,可以看到我们自己定义的插件已经发布了

查看插件2

这个时候,就可以像引用其它插件一样来引用我们自己发布的插件,只不过我们还需要指定maven的具体地址,因为我们还没有把自己的插件发布到jcenter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//项目根目录下的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地址,直接引用插件了。审核一般几个小时就会通过。