🐙

JShellでライブラリを追加しデバッグする (Gradleの場合)

2024/02/29に公開

Springを使ってるプロジェクトで「あれ、これ、こうするとどうなるんだっけ?」みたいなときが個人的にはわりとあります。そんなときJShellを使って動きを確認したいけど、Springは使ってるライブラリの数が多いから気軽にできない…!そんな悩みを解決します。未熟者め、精進せい。

なお、ネタ元は下記ブログで、そちらはMavenを使用していたのでそれをGradleでも動かせるようにしたという感じです。ありがとうございます。GradleもMavenも何もわからん。

下記のコードを build.gradle とかに突っ込んで動かせばOKです。

tasks.register('list') {
  FileCollection compileClasspath = configurations.compileClasspath
  dependsOn compileClasspath
  doLast {
    var classPaths = compileClasspath.filter { File file -> file.name != 'main' }.collect { File file -> file.path };
    println "--class-path ${classPaths.join(':')}"
  }
}
$ gradlew list
# 出力された内容をコピーしておく
--class-path /foo/bar.jar:/foo/baz.jar:...
$ jshell --class-path /foo/bar.jar:/foo/baz.jar:...

本当は参考元のようにtxtに出して cat すればスマートですが、とりあえず目的は達成できているのでヨシ!

Discussion