やりたいこと
VSCodeの『Language Support for Java(TM) by Red Hat』という拡張にはjava.autobuild.enabled
というオプションがあり、これはデフォルトでtrue
になっている。
つまりVSCodeではjava.project.sourcePaths
やjava.project.outputPath
やjava.project.referencedLibraries
などの設定を適切に行っていれば、Javaのコードの保存時に自動でビルドが走る。
ところがGradleを使っているプロジェクトでは自動ビルドが走らなくなる。
試してはいないが恐らくMavenを使っている場合も同様だと思われる。
要するにjavac
には対応してくれているが、./gradlew build
には対応してくれていないということなんだろうと思う。
Gradleを使っているプロジェクトでも素のJavaプロジェクト同様に自動ビルドが走るように設定をしていく。
方法
1. Run on Save拡張をインストール
Run on Saveという、保存時に指定したコマンドを実行してくれるVSCode拡張があるのでインストールする。
2. settings.jsonを編集
VSCodeの設定ファイルであるsettings.json
を編集して、コードの保存時に./gradlew build
を実行するように設定する。
{
"java.home": "/Users/zurukumo/.jenv/versions/21",
"java.import.gradle.java.home": "/Users/zurukumo/.jenv/versions/21",
"java.import.gradle.enabled": true,
"java.project.sourcePaths": ["src/main/java"],
"emeraldwalk.runonsave": {
"commands": [
{
"match": "\\.java$",
"cmd": "JAVA_HOME=/Users/zurukumo/.jenv/versions/21 ./gradlew build"
}
]
}
}
"match": "\\.java$"
と書くことで、ファイル名が.java
で終わっているファイルの保存時にのみコマンドが実行されるようになる。
ちなみにjava.home
を指定していてもRun on Saveからは読み込まれていないっぽく、仕方がないのでコマンドの前にJAVA_HOME=/Users/zurukumo/.jenv/versions/21
と環境変数を記述した。
二重に書いている感じが気持ち悪いが、今の自分の実力ではこれが限界…。
まとめ
絶対にもっと良い方法がある気がする。
もっと良い方法を知っている方はコメントで教えて欲しい。
EclipseとかIntelliJ IDEAとかだったらこんなに面倒なことをしなくても自動でビルドしてくれるんだろうか?
Comments