Skip to content

빌드 의존성 업그레이드 및 kapt → ksp 마이그레이션#368

Merged
unam98 merged 2 commits intodevelopfrom
feature/upgrade-build-dependencies
Apr 2, 2026
Merged

빌드 의존성 업그레이드 및 kapt → ksp 마이그레이션#368
unam98 merged 2 commits intodevelopfrom
feature/upgrade-build-dependencies

Conversation

@unam98
Copy link
Copy Markdown
Collaborator

@unam98 unam98 commented Apr 2, 2026

작업 배경

  • 새 Mac 환경(JDK 21)에서 기존 빌드가 실패하여 의존성 버전을 최신화
  • kapt 지원 종료 대비 ksp 마이그레이션 선행 적용
  • CI에서 deprecated된 GitHub Actions 버전으로 인한 빌드 실패 수정

변경 사항

빌드 의존성 업그레이드

항목 변경 전 변경 후
Gradle 8.0 8.13
AGP 8.1.3 8.13.2
Kotlin 1.8.10 2.2.0
Compose Compiler 1.4.3 (별도 지정) Kotlin 플러그인 내장
Hilt 2.44.2 (kapt) 2.56.2 (ksp)
Glide 4.12.0 (kapt) 4.16.0 (ksp)
KSP 없음 2.2.0-2.0.2
  • kapt는 DataBinding 처리용으로만 유지

CI workflow 업그레이드

항목 변경 전 변경 후
actions/checkout v2 v4
actions/cache v2 (별도) 제거 (setup-java 내장 캐시)
actions/setup-java v1 v4 (temurin)

영향 범위

  • 빌드 설정 파일 및 CI 워크플로우만 변경, 앱 소스 코드 변경 없음
  • 런타임 동작에 영향 없음

Test Plan

  • ./gradlew assembleDebug 로컬 빌드 성공 확인
  • CI 빌드 성공 확인
  • 에뮬레이터/실기기 설치 후 주요 기능 동작 확인

🤖 Generated with Claude Code

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 2, 2026

Warning

Rate limit exceeded

@unam98 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 11 minutes and 25 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 11 minutes and 25 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 57764357-efa8-4e7a-a063-5cb83342c546

📥 Commits

Reviewing files that changed from the base of the PR and between c554f34 and 00d9979.

📒 Files selected for processing (7)
  • .github/workflows/CI.yml
  • .gitignore
  • app/build.gradle
  • build.gradle
  • gradle/wrapper/gradle-wrapper.properties
  • gradlew
  • settings.gradle
📝 Walkthrough

Walkthrough

The pull request updates the Gradle build infrastructure by migrating from kapt to KSP for annotation processing (Hilt and Glide), bumping plugin versions across the stack (Kotlin 1.8.10 → 2.2.0, Android AGP 8.1.3 → 8.13.2, Gradle 8.0 → 8.13), adding Compose and KSP plugins, upgrading Glide to 4.16.0, and introducing toolchain configuration for JVM version 21.

Changes

Cohort / File(s) Summary
Kotlin & Plugin Upgrades
build.gradle, app/build.gradle
Updated Kotlin plugin from 1.8.10 to 2.2.0, added org.jetbrains.kotlin.plugin.compose plugin, added KSP Gradle plugin (2.2.0-2.0.2), updated Android AGP from 8.1.3 to 8.13.2, bumped Hilt version from 2.44.2 to 2.56.2.
Annotation Processing Migration
app/build.gradle
Switched Hilt compiler from kapt to ksp dependency, switched Glide compiler from kapt to ksp dependency, upgraded Glide from 4.12.0 to 4.16.0, removed explicit composeOptions block.
Toolchain & Wrapper Configuration
gradle/gradle-daemon-jvm.properties, gradle/wrapper/gradle-wrapper.properties, settings.gradle
Added new Gradle daemon JVM properties file with JetBrains toolchain version 21 and platform-specific download URLs, updated Gradle wrapper from 8.0 to 8.13, added foojay-resolver-convention plugin (0.10.0) to settings.gradle.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 The carrots of Kotlin now 2.2 grow,
KSP replaces kapt's old flow,
Gradle leaps forward with toolchains so keen,
Build system refreshed—the cleanest we've seen!
Compose and Hilt dance in harmony bright,
Version bumps done, the build's just right! 🥕✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title accurately summarizes the main changes: Gradle dependency upgrades and migration from kapt to ksp annotation processing.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/upgrade-build-dependencies

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@unam98 unam98 self-assigned this Apr 2, 2026
@unam98 unam98 force-pushed the feature/upgrade-build-dependencies branch from 4b73d86 to 4057ee4 Compare April 2, 2026 12:40
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
app/build.gradle (1)

14-15: Keeping kapt in :app means this migration won't deliver most of the speedup.

Android's KSP migration guide says Data Binding has no planned KSP support, and if any kapt processors remain in a module, kapt stubs are still generated there. If build performance is part of the motivation here, the meaningful follow-up is to isolate the remaining Data Binding usage out of :app, not just swap Hilt/Glide to KSP. (developer.android.com)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/build.gradle` around lines 14 - 15, The project still applies the
'kotlin-kapt' plugin in :app which keeps kapt stubs and negates KSP performance
gains; identify Data Binding usage in :app (layouts using <layout> or generated
binding classes) and extract those targets into a new library module (or move
Data Binding–dependent code into an isolated module) so :app can drop
'kotlin-kapt' and switch to KSP-only processors (update build.gradle to remove
id 'kotlin-kapt' once Data Binding usages are migrated, and ensure the new
module retains Data Binding and kapt as needed); reference the 'kotlin-kapt'
plugin entry and any generated binding classes to locate the code to move.
gradle/gradle-daemon-jvm.properties (1)

12-13: Avoid vendor-locking the daemon JVM unless JBR is actually required.

Gradle's daemon JVM criteria take precedence over JAVA_HOME / org.gradle.java.home, and the vendor field is optional. With toolchainVendor=JETBRAINS, a machine that already has a different JDK 21 installed is still treated as incompatible and may need a download. If the real requirement is just "run Gradle on Java 21", keep the version pin and drop the vendor pin. (docs.gradle.org)

♻️ Proposed fix
-toolchainVendor=JETBRAINS
 toolchainVersion=21
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@gradle/gradle-daemon-jvm.properties` around lines 12 - 13, The daemon JVM is
vendor-locked by setting toolchainVendor=JETBRAINS which forces Gradle to prefer
JBR; remove the toolchainVendor setting and keep toolchainVersion=21 so the
daemon requires Java 21 but is not tied to a specific vendor (update the
gradle/gradle-daemon-jvm.properties by deleting the toolchainVendor entry and
leaving toolchainVersion=21).
build.gradle (1)

21-23: This lands on the earliest 2.2.x Kotlin/KSP pair.

2.2.0 was the initial Kotlin 2.2 release, and JetBrains later shipped 2.2.10, 2.2.20, and 2.2.21; the AGP 8.13.2 docs now show 2.2.21 in their sample config. On the KSP side, later 2.2.x releases also shipped additional fixes before 2.2.21-2.0.4. Since this PR is about build-tool upgrades, I'd at least move the whole Kotlin family to the latest 2.2.x patch instead of stopping at 2.2.0 / 2.2.0-2.0.2. This is an inference from the published release stream, not a hard AGP 8.13.2 requirement. (kotlinlang.org)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@build.gradle` around lines 21 - 23, Update the three plugin version strings
to the latest Kotlin 2.2.x patch releases instead of 2.2.0; change id
'org.jetbrains.kotlin.android' and id 'org.jetbrains.kotlin.plugin.compose' from
version '2.2.0' to '2.2.21', and update id 'com.google.devtools.ksp' from
'2.2.0-2.0.2' to the corresponding KSP 2.2.21 patch (e.g. '2.2.21-2.0.4'),
keeping the apply false flags unchanged so build.gradle uses the current 2.2.x
bugfix releases.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@app/build.gradle`:
- Around line 14-15: The project still applies the 'kotlin-kapt' plugin in :app
which keeps kapt stubs and negates KSP performance gains; identify Data Binding
usage in :app (layouts using <layout> or generated binding classes) and extract
those targets into a new library module (or move Data Binding–dependent code
into an isolated module) so :app can drop 'kotlin-kapt' and switch to KSP-only
processors (update build.gradle to remove id 'kotlin-kapt' once Data Binding
usages are migrated, and ensure the new module retains Data Binding and kapt as
needed); reference the 'kotlin-kapt' plugin entry and any generated binding
classes to locate the code to move.

In `@build.gradle`:
- Around line 21-23: Update the three plugin version strings to the latest
Kotlin 2.2.x patch releases instead of 2.2.0; change id
'org.jetbrains.kotlin.android' and id 'org.jetbrains.kotlin.plugin.compose' from
version '2.2.0' to '2.2.21', and update id 'com.google.devtools.ksp' from
'2.2.0-2.0.2' to the corresponding KSP 2.2.21 patch (e.g. '2.2.21-2.0.4'),
keeping the apply false flags unchanged so build.gradle uses the current 2.2.x
bugfix releases.

In `@gradle/gradle-daemon-jvm.properties`:
- Around line 12-13: The daemon JVM is vendor-locked by setting
toolchainVendor=JETBRAINS which forces Gradle to prefer JBR; remove the
toolchainVendor setting and keep toolchainVersion=21 so the daemon requires Java
21 but is not tied to a specific vendor (update the
gradle/gradle-daemon-jvm.properties by deleting the toolchainVendor entry and
leaving toolchainVersion=21).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7f84fdf8-e2ce-45f1-b744-7da5227bf4a7

📥 Commits

Reviewing files that changed from the base of the PR and between 8691fef and c554f34.

📒 Files selected for processing (6)
  • app/build.gradle
  • build.gradle
  • gradle/gradle-daemon-jvm.properties
  • gradle/wrapper/gradle-wrapper.properties
  • gradlew
  • settings.gradle

@unam98 unam98 force-pushed the feature/upgrade-build-dependencies branch from 4057ee4 to 4a29c0e Compare April 2, 2026 12:51
unam98 added 2 commits April 2, 2026 21:54
- Gradle 8.0 → 8.13
- AGP 8.1.3 → 8.13.2
- Kotlin 1.8.10 → 2.2.0
- Compose Compiler: Kotlin 플러그인 내장 방식으로 전환
- Hilt 2.44.2 → 2.56.2 (ksp)
- Glide 4.12.0 → 4.16.0 (ksp)
- kapt는 DataBinding용으로만 유지
- actions/checkout v2 → v4
- actions/cache v2 제거, setup-java 내장 캐시 사용
- actions/setup-java v1 → v4 (temurin 배포판)
@unam98 unam98 force-pushed the feature/upgrade-build-dependencies branch from 4a29c0e to 00d9979 Compare April 2, 2026 12:54
@unam98 unam98 merged commit c796c9b into develop Apr 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant