IntelliJ Platform Pluginの開発にて、開発環境にある公開したくない情報を local.properties に定義してビルドする

IntelliJ Platform Pluginの開発をする中で、ローカルマシンのファイルパスなど、開発環境にある公開したくない情報を定義したくなりました。

ただ、どのようにすればよいのか分からなかったため、調べたときのメモを残します。

 
目次

 

環境

 

調査

IntelliJ Platform Pluginのビルドでは Gradle を使っています。 Gradle IntelliJ Plugin | IntelliJ Platform Plugin SDK

ただ、IntelliJ Platform Pluginの公式ドキュメントでは、どのようにすればよいか記載が見当たりませんでした。

そのため、他にもGradleを使っているものがないかを調べたところ、AndroidのビルドでもGradleを使っていることが分かりました。

 
では、Androidではどのように設定しているかを調べたところ、多くの記事で local.properties を使っていました。

そこで、以下の記事を参考に、IntelliJ Platform Plugin開発でも local.properties を使ってみます。
android - Read value from local.properties via Kotlin DSL - Stack Overflow

 

実装

今回は runIdeideDir に対して、 local.properties で定義した値を設定してみます。

 

build.gradle.kts の修正

まずはファイルの先頭あたりで、 local.properties をロードします。

なお、 local.properties ファイルが無くてもエラーにならないよう、ファイルの存在チェックも行っています。

import java.io.FileInputStream
import java.util.*

// load local.properties
val localPropertiesFileExists = File(rootProject.rootDir, "local.properties").exists()
val prop = if (localPropertiesFileExists) Properties().apply {
    load(FileInputStream(File(rootProject.rootDir, "local.properties")))
} else null

 
続いて、runIde の設定を変更します。

ちなみに、 ideDir は設定する値に Property<File> な型を要求することから、 file() を使っています。

runIde {
    // executable other IDE
    if (prop != null) {
        val d = prop.getProperty("ideDir")
        if (d.isNotEmpty()) {
            // written by Kotlin
            ideDir.set(file(prop.getProperty("ideDir")))

            // written by Groovy
            // ideDir = file(file(prop.getProperty("ideDir")))
        }
    }

 

local.propertiesの作成

続いて、 local.properties ファイルを作成します。

今回定義する ideDir には、起動対象のIDEが存在するファイルパスを指定します。

今のところWindowsで開発しているため、 \エスケープした以下のような値を設定します。

ideDir = C:\\Users\\<UserName>\\AppData\\Local\\JetBrains\\Toolbox\\apps\\RubyMine\\<ch-n>\\232.10300.41

 
以上で設定は完了です。

 

動作確認

Run Plugin したところ、NotificationToolWindow を含む自作のプラグインがRubyMine 2023.2.6 で起動しました。

local.properties の値が読み込めているようです。

 

ソースコード

Githubにあげました。
https://github.com/thinkAmi-sandbox/hello_jetbrains_plugin

今回のプルリクはこちら。
https://github.com/thinkAmi-sandbox/hello_jetbrains_plugin/pull/19

なお、今までのプルリクではGithub Actionsがエラーになっていましたが、今回のプルリクからは成功しています。