Intellij IDEAAndroidIntelliJ IDEA 专注

Intellij IDEA 插件开发 -- 快速发布插件到自建仓

2016-11-25  本文已影响1737人  khotyn

Intellij IDEA 有一个自己的官方的插件仓库,但是当我们的开发的 Intellij IDEA 的插件不能够对外公开时,我们就需要搭建自己的 Intellij IDEA 的插件仓库。

搭建 Intellij IDEA 插件仓库

Intellij IDEA 的官方文档里面有提到怎么去新建一个插件仓库,但是,这部分的文档却不在 Intellij IDEA 插件的开发文档里面,而是在插件相关功能的使用文档里面:https://www.jetbrains.com/help/idea/2016.3/adding-plugins-to-enterprise-repositories.html

这里简单对这个文档进行一个说明,如果需要新建一个插件仓库,非常简单,只需要提供一个 URL,当访问这个 URL 的时候,返回如下的一个 XML 即可:

<plugins>
    <plugin id="com.taobao.middleware.HotCode2Plugin" url="http://localhost/downloads/hotcode2-idea-plugin.jar" version="0.1"/>
    <plugin id="com.alipay.sofa.andromeda" url="http://localhost/idea/download/com.alipay.sofa.andromeda-1.1.34.zip" version="1.1.34"/>
</plugins>

其中:

这个 XML 可以由服务器动态生成或者可以是一个写死的 XML。

使用 Gradle 来快速发布插件到自建仓库

当然,每次都手工更新插件仓库有点 low,作为程序员,总想把能够自动化的事情全部自动化掉。Jetbrains 官方提供了一个 Gradle Intellij Plugin 来帮助我们构建发布 Intellij IDEA 插件(这方面的教程,大家可以看 http://blog.qianlicao.cn/technology/2016/11/03/build-plugins-with-gradle/)。对于发布 Intellij IDEA 插件的支持,默认行为是发布到 Jetbrains 的官方的仓库上面去的,不过在最新的 SNAPSHOT 版本中,这个插件提供了一个属性 host 可以设置自定义的仓库,我们可以在自己的 build.gradle 文件里面设置这个 host 属性:

 publishPlugin.doFirst {
     publishPlugin.host = 'http://ysera.alipay.net:9000/'
 }

设置好了之后,就可以直接使用 gradle publishPlugin 来发布 Intellij IDEA 插件了。

但是,等等,虽然设置好了自建的插件仓库的地址,然后我们并不是知道 gradle publishPlugin 这个命令上传插件的时候的 http request 是张什么样子的,我们的自建仓库也就无法处理上传插件的请求。我在试验的过程中,通过 Charles 抓了一下这个命令发送的 http 请求,结果如下:

从上面这个图看到,gradle publishPlugin 这个命令会将插件发布到 host/plugin/uploadPlugin 这个路径下,提交的请求体包含了如下的信息:

知道了上面的请求信息,我们就可以写出自己的处理请求的代码,来让 gradle publishPlugin 这个命令可以直接将插件上传到自建的仓库上了。

需要注意的一点是,我们自建的仓库可以不用用户名密码就可以上传,这个时候再 build.gradle 里面,可以将用户名,密码设置为空,如果不为空,执行 gradle publishPlugin 的时候会报错。

蚂蚁金服招聘中间件工程师,有兴趣的请联系 khotyn.huangt@alibaba-inc.com

上一篇下一篇

猜你喜欢

热点阅读