IDEA外掛開發筆記001環境搭建(使用Gradle外掛方式)
今天鼓搗了一天IDEA Community的外掛開發環境,現在總結一些關鍵點
步驟
安裝Gradle
Gradle有幾個要素:
GRADLE_USER_HOME系統環境變數,因為Gradle用到了Cache,這個Cache預設在 USER.DIR/cache目錄,也就是在C盤,這對於Windows使用者來說,這能忍?
因此我指定這個變數GRADLE_USER_HOME=H:\GradleData
,這樣每次Gradle下載的目錄都在這個目錄下,不會佔用C盤空間。
PATH 直接新增GRADLE安裝路徑的bin目錄。
gradle.properties這個檔案是跟著GRADLE_USER_HOME走的,在GRADLE_USER_HOME\gradle.properties
Gradle使用代理開發IDEA外掛,會下載IDEA的二進位制發行包,以及他的原始碼,不設定代理,幾乎不可能下載成功的。
閱讀文件
快速入門可以閱讀Creating Your First Plugin
注意事項 IDE Development Instances文件有一個重要說明,執行外掛程式之後,他會啟動之後的IDEA例項,這個例項需要執行在IDEA配套的JetBrains的Runtime。也就是 JBR。
如果啟動之後的Runtime不是JBR,就不太好,可能有問題。
安裝IDEA
電腦本身有IDEA的可以跳過,推薦使用 Jetbrains Tookbox安裝任意版本的IDEA。
根據IDEA的文件,IDEA本身構建於IntelliJ Platform,他自己其實也是IntelliJ Platform。因此如果不想下載額外的Platform SDK可以經過配置直接使用,避免在Gradle執行外掛時下載。
使用Jetbrains提供的官方Template
開啟intellij-platform-plugin-template專案,登入GitHub賬號之後才會看到文件中所說的use this Template
按鈕。
從IDEA中匯入這個專案,如果要防止Gradle Wrapper自動執行,要提前設定 Gradle 使用安裝好的Gradle,而不是用Gradle-Wrapper,否則要下載Gradle,網路不好的情況下又是一次折磨。
開啟專案之後,可以看到 Gradle的構建配置檔案 build.gradle.kts
// Configure gradle-intellij-plugin plugin.
// Read more: https://github.com/JetBrains/gradle-intellij-plugin
intellij {
pluginName = pluginName
// version = platformVersion 這裡不開啟這個選項,否則Gradle會從網上下載IDEA,本地有不想下載的。
type = platformType
localPath = intelliJPath //這裡的IntelliJPath變數需要仿照其他的變數進行宣告,並且在 build.properties 中指定他的值。
// localSourcesPath = intelliJSourcePath
downloadSources = platformDownloadSources.toBoolean()
updateSinceUntilBuild = true
// Plugin Dependencies:
// https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_dependencies.html
//
// setPlugins("java")
}
//這裡是Gradle-IntelliJ外掛的Task的配置
tasks {
runIde {
jbrVersion("jbr-11_0_7b765.65")
}
}
這裡給出IDEA 文件中的Gradle Guide的配置連結。
這裡可以看到gradle-intellij-plugin的配置檔案結構。
在tasks節點中配置 runIde.jbrVersion
為("jbr-11_0_7b765.65"),這個是我多次嘗試的結果,只有這樣啟動外掛之後,啟動例項才會使用對應的JBR,否則會使用 Oracle的JDK。
這個版本的規則是什麼?
IDE Development Instances文件 中指出的地址中,可以看到Release notes。
這裡IDE使用的版本是 2020.1.4,那麼這個版本就選擇 20(201)4中括號對應的 201下方的最後一個版本:"11.0.7+10-b765.65"(可以在IDEA的 About看到這個版本程式碼), 那麼點進去會看到下載連結。
IntelliJ的JBR下載頁面是對應上面的下載連結的, 可以看到檔名。
jbr-11_0_7(-windows-x64)-b765.65.tar.gz
這個最終檔名去掉 jbr-11_0_7(-windows-x64)-b765.65
括號中的平臺號,得到jbrVersion=jbr-11_0_7b765.65
。
經過嘗試發現GRADLE是按照這個規則逆向計算出下載地址的。
自己下載JBR是沒用的,GRADLE還是會自己下載,他下載之後放進Cache才算完成。
啟動
在IDEA 右側的 Gradle選項卡 TAB,找到Task,RunIde 即可執行這個外掛。
另外一個重要的問題,Debug原始碼從哪裡配置
有人說可以從Github 找到Community IDEA的原始碼,可以切換到對應版本的TAG,例如 "201.8743.12",下載得到一個原始碼壓縮包。這是IDEA 2020.1.4的對應版本。(此時已經有IDEA 2020.2了)
這裡給出一種更加完美的方法:
https://www.jetbrains.com/intellij-repository/releases/
這個網址給出了所有的IDEA二進位制包,以及打包好的原始碼。下載ideaIC-sources.jar
得到原始碼。
201.8743.12 2020-07-21 05:47:47 MSK 201.8743.12 BUILD.txt idea-community-resources-sources.jar idea-community-resources.jar idea-community-resources.pom ideaIC-sources.jar ideaIC.pom ideaIC.zip ideaIU-teamcity.pom ideaIU-teamcity.zip ideaIU-annotations.zip ideaIU.pom ideaIU.zip intellij-core.pom intellij-core.zip jps-build-test.jar jps-build-test.pom jps-standalone.pom jps-standalone.zip ruby-test-framework.jar ruby-test-framework.pom
在Project Structure中找到SDK,沒有就新增一個IntelliJ Platform SDK
, 這樣就可以新增SourcePath,點選+選擇剛剛下載好的原始碼,完美。
總結
這篇筆記給出了僅下載JBR+原始碼的方式,以及Gradle的簡單配置,重點講述了怎麼保證啟動的IDEA例項使用正確版本的JBR。