最近想试着开发一个IDEA的插件,官方指导 中有两种方式:

  • 使用Gradle
  • 使用DevKit

而且官方推荐Gradle的方式,称DevKit的工作流已经过时了。但百度出来的全都是DevKit的方式。而且Android Studio也是gradle,那就试试gradle的方式开发一个插件。

Gradle配置

使用gradle创建工程之后,需要下载一些文件,因为GWF的原因这一步会特别慢,不使用VPN基本都失败了。网上找了使用aliyun源的方式,搞定了这一步。

单个工程修改

将工程下build.gradle中的repositories替换为如下内容

repositories {
    maven { url 'https://maven.aliyun.com/repository/public/' }
    maven { url 'https://maven.aliyun.com/repository/google/' }
    maven { url 'https://maven.aliyun.com/repository/jcenter' }
}

具体替换地址可以看aliyun官网的地址,网上大多数配置都没有更新,使用的还是旧地址。

全局配置

以上方式只修改单个工程的,每次新建工程都要修改,很麻烦。下面这个方法可以修改全局的配置。

C:\Users\用户名\.gradle目录下创建init.gradle文件,内容如下:

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public/' }
        maven { url 'https://maven.aliyun.com/repository/google/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }

        all { ArtifactRepository repo ->
            if (repo instanceof MavenArtifactRepository) {
                def url = repo.url.toString()

                if (url.startsWith('https://repo.maven.apache.org/maven2/') || url.startsWith('https://repo.maven.org/maven2') 
                    || url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')
                    || url.startsWith('https://maven.google.com/') || url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                    //project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
    }

    buildscript {
        repositories {
            maven{ url 'https://maven.aliyun.com/repository/public/'}
            maven{ url 'https://maven.aliyun.com/repository/google/'}
            maven{ url 'https://maven.aliyun.com/repository/jcenter'}

            all { ArtifactRepository repo ->
                if (repo instanceof MavenArtifactRepository) {
                    def url = repo.url.toString()
                    if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')
                         || url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                        //project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                        remove repo
                    }
                }
            }
        }
    }
}

可以看到,思路就是在自动添加aliyun地址,然后删掉默认的repo地址。

下载IDEA-sources.jar

以上两个配置之后,会很快的下载好gradle相关的依赖,但开发IDEA插件,会从jetbrains官网下载ideaIC-2018.3.5-sources.jar文件,估计是和插件调试有关。这个文件aliyun肯定不会有,下载巨慢。

解决方法就是手动下载好,放在如下临时目录下

C:\Users\用户名\.gradle\caches\modules-2\files-2.1\com.jetbrains.intellij.idea\ideaIC\2018.3.5\临时目录\

具体文件和路径与IDEA版本相关。

放置之后,重启IDEA就好了。

使用gradle开发插件

配置好gradle之后,按照官网的指导开发一个Hello World。点击运行之后,会打开一个新的IDEA窗口,随便选择一个项目进入之后,就可以看到效果了。如下:

idea

idea