Skip to content

[AN] Bottari Convention Plugin Guide

MunJangHun edited this page Nov 24, 2025 · 2 revisions

๐Ÿ“˜ Bottari Convention Plugin Guide

๋ฉ€ํ‹ฐ๋ชจ๋“ˆ Android ํ”„๋กœ์ ํŠธ์˜ ๋นŒ๋“œ ์„ค์ •์„ ์ค‘์•™ํ™”ํ•˜๊ณ ,
๋ชจ๋“ˆ ๊ฐ„ ์ผ๊ด€๋œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ Convention Plugin ์„ธํŠธ์ž…๋‹ˆ๋‹ค.

๊ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์—ญํ• ยท์ ์šฉ ์˜์—ญยท์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ,
์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” alias(libs.plugins.bottari.*) ํ˜•ํƒœ๋กœ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

1. Overview

Convention Plugin์˜ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฐ˜๋ณต๋˜๋Š” Android/Kotlin ์„ค์ • ์ œ๊ฑฐ
  • ๋ชจ๋“ˆ ๊ฐ„ compileSdk/minSdk ๋“ฑ ํ™˜๊ฒฝ ํ†ต์ผ
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/Feature/App ๋ ˆ๋ฒจ์˜ ๊ณตํ†ต ๋กœ์ง ์ž๋™ํ™”
  • Compose, Hilt, KSP ๋“ฑ ์ข…์†๋œ ๊ธฐ๋Šฅ์„ ์„ ์–ธ์  ๋ฐฉ์‹์œผ๋กœ ํ™œ์„ฑํ™”
  • ๋ชจ๋“ˆ ๊ตฌ์กฐ๊ฐ€ ์ปค์ ธ๋„ ์œ ์ง€๊ด€๋ฆฌ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ ๊ตฌ์„ฑ

ํ”„๋กœ์ ํŠธ ๋‚ด ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
Plugin Target Purpose
AndroidApplicationConventionPlugin app ๊ธฐ๋ณธ Android/Kotlin ์„ค์ •
AndroidApplicationComposeConventionPlugin app Compose ์„ธํŒ…
AndroidLibraryConventionPlugin library modules ๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •
AndroidLibraryComposeConventionPlugin library modules Compose + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
AndroidFeatureConventionPlugin feature modules Feature ์กฐํ•ฉํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ
AndroidHiltConventionPlugin any Hilt/KSP ์„ค์ •
JvmKotlinConventionPlugin domain ์ˆœ์ˆ˜ JVM ๋ชจ๋“ˆ ์„ค์ •

2. Plugin Details

2.1. AndroidApplicationConventionPlugin

โœ” ์—ญํ• 

  • compileSdk/minSdk/targetSdk ๊ธฐ๋ณธ ์„ค์ •
  • versionCode, versionName ์ž๋™ ์ฃผ์ž…
  • debug/release buildTypes ์ •์˜ (minify ์˜ต์…˜ ํฌํ•จ)
  • :domain, :di, :presentation, :logger ๊ธฐ๋ณธ ์˜์กด์„ฑ ์—ฐ๊ฒฐ
  • Kotlin ์˜ต์…˜(JVM Target ๋“ฑ) ํ†ต์ผ ์ ์šฉ

2.2. AndroidApplicationComposeConventionPlugin

โœ” ์—ญํ• 

  • Compose build feature ์ž๋™ ํ™œ์„ฑํ™”
  • Compose BOM ๋ฐ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ (material, ui-tooling ๋“ฑ)
  • Debug Tooling Preview ํ™˜๊ฒฝ ๊ตฌ์„ฑ

2.3. AndroidLibraryConventionPlugin

โœ” ์—ญํ• 
Android ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์—์„œ ๊ณตํ†ต ์„ค์ •์„ ์ œ๊ณต:

  • compileSdk/minSdk/targetSdk ์ผ๊ด€ํ™”
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์šฉ buildTypes ๊ตฌ์„ฑ
  • ํ…Œ์ŠคํŠธ ํƒ€๊ฒŸ ํ™˜๊ฒฝ ํ†ต์ผ
  • Java/Kotlin ์„ค์ • ๊ณตํ†ตํ™”

2.4. AndroidLibraryComposeConventionPlugin

โœ” ์—ญํ• 
Compose UI๊ฐ€ ํฌํ•จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์—์„œ ํ•„์š”ํ•œ ์„ค์ •์„ ์ž๋™ ์ ์šฉ:

  • Compose build feature
  • Compose BOM ๋ฐ ๊ธฐ๋ณธ ์˜์กด์„ฑ
  • Preview/Tooling ์ง€์›

2.5. AndroidFeatureConventionPlugin

Feature ๋ชจ๋“ˆ์„ ์œ„ํ•œ ์กฐํ•ฉํ˜• ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.

โœ” ์—ญํ• 
๋‹ค์Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ•œ ๋ฒˆ์— ์ ์šฉ:

  • AndroidLibraryConventionPlugin
  • AndroidLibraryComposeConventionPlugin
  • AndroidHiltConventionPlugin ๊ธฐ๋ณธ ์˜์กด์„ฑ์„ ์ž๋™ ์ถ”๊ฐ€:
  • :domain
  • :di
  • :logger

2.6. AndroidHiltConventionPlugin

โœ” ์—ญํ• 

  • Hilt ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž๋™ ์ ์šฉ
  • KSP ์ ์šฉ ๋ฐ Hilt compiler ์—ฐ๊ฒฐ
  • Hilt core/runtime ์˜์กด์„ฑ ์ž๋™ ์ฃผ์ž…

2.7. JvmKotlinConventionPlugin

Android ๋น„์˜์กด ๋ชจ๋“ˆ(domain ๋“ฑ)์„ ์œ„ํ•œ JVM ์„ค์ • ํ”Œ๋Ÿฌ๊ทธ์ธ.

โœ” ์—ญํ• 

  • kotlin-jvm, java-library ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž๋™ ์ ์šฉ
  • JDK/Toolchain ํ†ต์ผ
  • JVM Target ์ค‘์•™ ์„ค์ •
  • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ธฐ๋ณธ ์„ค์ •


3. Benefits

Convention Plugin์„ ์ ์šฉํ•˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํšจ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
โœ” ์ผ๊ด€๋œ ๋นŒ๋“œ ํ™˜๊ฒฝ

๋ชจ๋“  Android/Kotlin ์ปดํŒŒ์ผ ์˜ต์…˜์„ ํ•˜๋‚˜์˜ ๊ตฌ์กฐ์—์„œ ๊ด€๋ฆฌ.

โœ” ๋ชจ๋“ˆ ์„ค์ • ๋ˆ„๋ฝ ๋ฐฉ์ง€

๊ฐ ๋ชจ๋“ˆ์—์„œ ๋นŒ๋“œ ์˜ต์…˜์„ ์ง์ ‘ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์Œ.

โœ” ์ฝ”๋“œ ์ค‘๋ณต ๊ฐ์†Œ

build.gradle.kts ํŒŒ์ผ๋“ค์ด 50% ์ด์ƒ ๊ฐ„๊ฒฐํ•ด์ง.

โœ” ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ

SDK ๋ฒ„์ „, Compose ๋ฒ„์ „, Hilt ์˜์กด์„ฑ์ด ๋ชจ๋‘ ์ค‘์•™์—์„œ ๊ด€๋ฆฌ๋จ.

โœ” ๋ชจ๋“ˆ ์ฆ๊ฐ€์—๋„ ๊ด€๋ฆฌ ๋น„์šฉ ์ผ์ •

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๊ฐ€ ์ปค์ ธ๋„ ์„ค์ • ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Œ.

๐Ÿงณ ๋ณด๋”ฐ๋ฆฌ


๊ณตํ†ต


AN (Android)


BE (Backend)

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…


Clone this wiki locally