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

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 即可:


    
    

其中:

  • id 为插件的 ID,需要跟在插件的 plugin.xml 里面的设定的 ID 一致。
  • url 为插件的 ZIP 包下载的地址。
  • version 是插件的版本号。

这个 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 请求,结果如下:

Intellij IDEA 插件开发 -- 快速发布插件到自建仓库_第1张图片

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

  • userName:用户名
  • password:密码
  • xmlId:插件的 ID,也就是在 plugin.xml 里面定义的 ID。
  • file:插件的 ZIP 包。

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

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

蚂蚁金服招聘中间件工程师,有兴趣的请联系 [email protected]

你可能感兴趣的:(Intellij IDEA 插件开发 -- 快速发布插件到自建仓库)