Skip to content

Commit 482e60a

Browse files
committed
Refactor: Convention Plugin 구조 개선
- ApplicationId.kt 삭제, Extensions.kt 추가하여 namespace 자동 계산 로직 통합 - KotlinSerializationPlugin, KotlinParcelizePlugin 신규 추가 - AppVersion: ApplicationExtension 파라미터 직접 전달 방식으로 변경, LibraryExtension의 불필요한 버전 BuildConfig 필드 제거 - ktlint를 allprojects 대신 각 convention plugin에서 적용하도록 이전 - 각 모듈 build.gradle.kts에서 namespace 명시 제거 (자동 계산으로 대체)
1 parent dfad3ee commit 482e60a

20 files changed

Lines changed: 112 additions & 170 deletions

build-logic/convention/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,15 @@ gradlePlugin {
4646
id = "bitnagil.kotlin"
4747
implementationClass = "com.threegap.bitnagil.convention.KotlinJvmPlugin"
4848
}
49+
50+
register("kotlinSerialization") {
51+
id = "bitnagil.kotlin.serialization"
52+
implementationClass = "com.threegap.bitnagil.convention.KotlinSerializationPlugin"
53+
}
54+
55+
register("kotlinParcelize") {
56+
id = "bitnagil.kotlin.parcelize"
57+
implementationClass = "com.threegap.bitnagil.convention.KotlinParcelizePlugin"
58+
}
4959
}
5060
}

build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidApplicationPlugin.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
11
package com.threegap.bitnagil.convention
22

33
import com.android.build.api.dsl.ApplicationExtension
4+
import com.threegap.bitnagil.convention.extension.basePackage
45
import com.threegap.bitnagil.convention.extension.configureAppVersion
5-
import com.threegap.bitnagil.convention.extension.configureApplicationId
66
import com.threegap.bitnagil.convention.extension.configureComposeAndroid
77
import com.threegap.bitnagil.convention.extension.configureKotlinAndroid
8+
import com.threegap.bitnagil.convention.extension.libs
89
import org.gradle.api.Plugin
910
import org.gradle.api.Project
10-
import org.gradle.api.artifacts.VersionCatalogsExtension
11-
import org.gradle.kotlin.dsl.getByType
1211
import org.gradle.kotlin.dsl.configure
1312

1413
class AndroidApplicationPlugin : Plugin<Project> {
1514
override fun apply(target: Project): Unit = with(target) {
1615
pluginManager.apply {
1716
apply("com.android.application")
18-
apply("org.jetbrains.kotlin.android")
1917
apply("org.jetbrains.kotlin.plugin.compose")
18+
apply("org.jlleitschuh.gradle.ktlint")
2019
}
2120

22-
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
2321
extensions.configure<ApplicationExtension> {
2422
configureKotlinAndroid(this)
2523
configureComposeAndroid(this)
26-
configureAppVersion()
27-
configureApplicationId()
24+
configureAppVersion(this)
2825
with(defaultConfig) {
26+
applicationId = basePackage
2927
targetSdk = libs.findVersion("targetSdk").get().requiredVersion.toInt()
30-
versionCode = libs.findVersion("versionCode").get().requiredVersion.toInt()
3128
}
3229
}
3330
}

build-logic/convention/src/main/java/com/threegap/bitnagil/convention/AndroidComposePlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.threegap.bitnagil.convention
22

3-
import com.android.build.gradle.LibraryExtension
3+
import com.android.build.api.dsl.LibraryExtension
44
import com.threegap.bitnagil.convention.extension.configureComposeAndroid
55
import org.gradle.api.Plugin
66
import org.gradle.api.Project
Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.threegap.bitnagil.convention
22

3-
import com.android.build.gradle.LibraryExtension
4-
import com.threegap.bitnagil.convention.extension.configureAppVersion
5-
import com.threegap.bitnagil.convention.extension.configureApplicationId
3+
import com.android.build.api.dsl.LibraryExtension
64
import com.threegap.bitnagil.convention.extension.configureKotlinAndroid
75
import com.threegap.bitnagil.convention.extension.configureKotlinCoroutine
86
import org.gradle.api.Plugin
@@ -13,14 +11,12 @@ class AndroidLibraryPlugin : Plugin<Project> {
1311
override fun apply(target: Project): Unit = with(target) {
1412
pluginManager.apply {
1513
apply("com.android.library")
16-
apply("org.jetbrains.kotlin.android")
14+
apply("org.jlleitschuh.gradle.ktlint")
1715
}
1816

1917
extensions.configure<LibraryExtension> {
2018
configureKotlinAndroid(this)
21-
configureKotlinCoroutine(this)
22-
configureAppVersion()
23-
configureApplicationId()
19+
configureKotlinCoroutine()
2420
}
2521
}
2622
}

build-logic/convention/src/main/java/com/threegap/bitnagil/convention/HiltPlugin.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package com.threegap.bitnagil.convention
22

3+
import com.threegap.bitnagil.convention.extension.libs
34
import org.gradle.api.Plugin
45
import org.gradle.api.Project
5-
import org.gradle.api.artifacts.VersionCatalogsExtension
66
import org.gradle.kotlin.dsl.dependencies
7-
import org.gradle.kotlin.dsl.getByType
87

98
class HiltPlugin : Plugin<Project> {
109
override fun apply(target: Project): Unit = with(target) {
@@ -13,7 +12,6 @@ class HiltPlugin : Plugin<Project> {
1312
apply("com.google.devtools.ksp")
1413
}
1514

16-
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
1715
dependencies {
1816
"implementation"(libs.findLibrary("hilt.android").get())
1917
"ksp"(libs.findLibrary("hilt.compiler").get())

build-logic/convention/src/main/java/com/threegap/bitnagil/convention/KotlinJvmPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class KotlinJvmPlugin : Plugin<Project> {
1313
pluginManager.apply {
1414
apply("java-library")
1515
apply("org.jetbrains.kotlin.jvm")
16+
apply("org.jlleitschuh.gradle.ktlint")
1617
}
1718
}
1819

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.threegap.bitnagil.convention
2+
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
6+
class KotlinParcelizePlugin : Plugin<Project> {
7+
override fun apply(target: Project): Unit = with(target) {
8+
pluginManager.apply("org.jetbrains.kotlin.plugin.parcelize")
9+
}
10+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.threegap.bitnagil.convention
2+
3+
import com.threegap.bitnagil.convention.extension.libs
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
import org.gradle.kotlin.dsl.dependencies
7+
8+
class KotlinSerializationPlugin : Plugin<Project> {
9+
override fun apply(target: Project): Unit = with(target) {
10+
pluginManager.apply("org.jetbrains.kotlin.plugin.serialization")
11+
12+
dependencies {
13+
"implementation"(libs.findLibrary("kotlinx-serialization-json").get())
14+
}
15+
}
16+
}
Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,18 @@
11
package com.threegap.bitnagil.convention.extension
22

33
import com.android.build.api.dsl.ApplicationExtension
4-
import com.android.build.api.dsl.LibraryExtension
54
import org.gradle.api.Project
6-
import org.gradle.api.artifacts.VersionCatalogsExtension
7-
import org.gradle.kotlin.dsl.findByType
8-
import org.gradle.kotlin.dsl.getByType
95

10-
internal fun Project.configureAppVersion() {
11-
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
6+
internal fun Project.configureAppVersion(extension: ApplicationExtension) {
127
val major = libs.findVersion("versionMajor").get().requiredVersion
138
val minor = libs.findVersion("versionMinor").get().requiredVersion
149
val patch = libs.findVersion("versionPatch").get().requiredVersion
1510

16-
extensions.findByType<ApplicationExtension>()?.let { appExtension ->
17-
appExtension.defaultConfig {
18-
versionName = "$major.$minor.$patch"
19-
buildConfigField("int", "VERSION_MAJOR", major)
20-
buildConfigField("int", "VERSION_MINOR", minor)
21-
buildConfigField("int", "VERSION_PATCH", patch)
22-
}
23-
}
24-
25-
extensions.findByType<LibraryExtension>()?.let { libExtension ->
26-
libExtension.apply {
27-
defaultConfig {
28-
buildConfigField("int", "VERSION_MAJOR", major)
29-
buildConfigField("int", "VERSION_MINOR", minor)
30-
buildConfigField("int", "VERSION_PATCH", patch)
31-
}
32-
buildFeatures {
33-
buildConfig = true
34-
}
35-
}
11+
extension.defaultConfig {
12+
versionCode = libs.findVersion("versionCode").get().requiredVersion.toInt()
13+
versionName = "$major.$minor.$patch"
14+
buildConfigField("int", "VERSION_MAJOR", major)
15+
buildConfigField("int", "VERSION_MINOR", minor)
16+
buildConfigField("int", "VERSION_PATCH", patch)
3617
}
3718
}

build-logic/convention/src/main/java/com/threegap/bitnagil/convention/extension/ApplicationId.kt

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)