. /g rad l ew b ui ld を 実行 する 仕 組み を調 べ る JJUG CCC 2026 Spring Lightning Talks okarin 2026.05.30 1
自己紹介 自己紹介 okarin 所属 Java 歴 ・サイボウズ株式会社(2026年2月〜) ・4ヶ月 好きなもの X ・ランニング、ブロッコリー、日本庭園など ・@okarin_dev 2
背景 なぜ ./gradlew build の仕組みを知ろうと思ったか Java 入門当初 `gradle init` を実行すると、いろんなタスクが実行できて便利! 数ヶ月後… どうやってタスクが実行できるのかがなんもわからん 今回は使用頻度の高い ./gradlew build にフォーカスして、 なぜ build タスクが実行できるようになるのかを調べてみた 3
./gradlew build の仕組み 初期化フェーズ 空のディレクトリでタスク一覧を表示しようとすると、設定ファイルがないエラーになる (※一部省略) $ gradle tasks Directory '/path/to/workspace/learn-gradle' does not contain a Gradle build. A Gradle build's root directory should contain one of the possible settings files: settings.gradle, settings.gradle.kts, settings.gradle.dcl.It may also contain one of the possible build files: build.gradle, build.gradle.kts, build.gradle.dcl. BUILD FAILED in 2s 4
./gradlew build の仕組み settings ファイル追加後 空の設定ファイル追加後は、多くのタスクが確認できる (※一部省略) $ touch settings.gradle.kts $ gradle tasks Build Setup tasks ----------------init - Initializes a new Gradle build. updateDaemonJvm - Generates or updates the Gradle Daemon JVM criteria. wrapper - Generates Gradle wrapper files. Help tasks ---------artifactTransforms - Displays the Artifact Transforms that can be executed in root project 'test-gradle'. buildEnvironment - Displays all buildscript dependencies declared in root project 'test -gradle'. dependencies - Displays all dependencies declared in root project 'test-gradle'. dependencyInsight - Displays the insight into a specific dependency in root project 'test-gradle'. help - Displays a help message ... 5
./gradlew build の仕組み base プラグインの追加 build.gradle.kts を作成して base プラグインを追加すると Build tasks が追加される (※一部省略) $ echo 'plugins { base }' > build.gradle.kts $ gradle tasks Build tasks ----------assemble - Assembles the outputs of this project. build - Assembles and tests this project. clean - Deletes the build directory. Verification tasks -----------------check - Runs all checks. 6
./gradlew build の仕組み base プラグイン base プラグインとは? 他のプラグインやビルド作成者が提供する、より具体的なタスクを包括する傘のよう な役割を果たすライフサイクルタスクのセット(= build, assemble, check) https://docs.gradle.org/current/userguide /base_plugin.html base プラグインを登録すると build, assemble, check が登録される(コード) さらに下位のタスクを assemble や check に 紐づけることで、build タスクを形成する (build には直接紐付けない) 7
./gradlew build の仕組み gradle init 実行 `gradle init` を実行した場合は application プラグインが追加される (※一部省略) $ gradle init --type java-application --dsl kotlin --project-name learn-gradle --test-framework junitjupiter --java-version 21 --use-defaults --overwrite $ cat app/build.gradle.kts plugins { // Apply the application plugin to add support for building a CLI application in Java. application } Application > Java > JavaBase > Base > LifecycleBase で build タスクが登録される → wrapper を経由して ./gradlew build でビルドが実行できる 8
まとめ まとめ ◼ タスクを実行するには、最低限 settings ファイルが必要 ◼ base プラグインを追加することで build, assemble, check タスク が登録される ◼ さらに下位のタスクを assemble, check タスクに紐づけることで build タスクが形成される ◼ `gradle init` を実行したときは、 application プラグインによって build タスクが形成される 9
©️ Cybozu, Inc. 10