Skip to content

Commit 23562b4

Browse files
authored
Merge pull request #5 from YAPP-Github/feat/#1-multimodule-new
멀티모듈 아키텍처 구조 설정
2 parents 9d93726 + 71d95d2 commit 23562b4

File tree

40 files changed

+525
-23
lines changed

40 files changed

+525
-23
lines changed

.editorconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
root = true
2+
3+
[*]
4+
ktlint_function_naming_ignore_when_annotated_with = Composable
5+
6+
[{*.kt,*.kts}]
7+
ktlint_standard_package-name = disabled

app/build.gradle.kts

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
plugins {
2-
alias(libs.plugins.android.application)
3-
alias(libs.plugins.kotlin.android)
2+
alias(libs.plugins.twix.android.application)
3+
alias(libs.plugins.twix.koin)
44
}
55

66
android {
77
namespace = "com.yapp.twix"
8-
compileSdk = 35
98

109
defaultConfig {
1110
applicationId = "com.yapp.twix"
12-
minSdk = 28
13-
targetSdk = 35
1411
versionCode = 1
1512
versionName = "1.0"
16-
17-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
1813
}
1914

2015
buildTypes {
@@ -26,23 +21,15 @@ android {
2621
)
2722
}
2823
}
29-
30-
compileOptions {
31-
sourceCompatibility = JavaVersion.VERSION_17
32-
targetCompatibility = JavaVersion.VERSION_17
33-
}
34-
35-
kotlinOptions {
36-
jvmTarget = "17"
37-
}
3824
}
3925

4026
dependencies {
41-
implementation(libs.androidx.core.ktx)
42-
implementation(libs.androidx.appcompat)
43-
implementation(libs.material)
44-
45-
testImplementation(libs.junit)
46-
androidTestImplementation(libs.androidx.junit)
47-
androidTestImplementation(libs.androidx.espresso.core)
27+
implementation(projects.core.designSystem)
28+
implementation(projects.core.network)
29+
implementation(projects.core.navigation)
30+
implementation(projects.core.ui)
31+
implementation(projects.core.util)
32+
implementation(projects.data)
33+
implementation(projects.domain)
34+
implementation(projects.feature.login)
4835
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
group = "com.twix.convention"
6+
7+
java {
8+
sourceCompatibility = JavaVersion.VERSION_17
9+
targetCompatibility = JavaVersion.VERSION_17
10+
}
11+
12+
kotlin {
13+
jvmToolchain(17)
14+
}
15+
16+
dependencies {
17+
compileOnly(libs.android.gradle.plugin)
18+
compileOnly(libs.kotlin.gradle.plugin)
19+
compileOnly(libs.compose.gradle.plugin)
20+
compileOnly(libs.ksp.gradle.plugin)
21+
compileOnly(libs.android.junit5.gradle.plugin)
22+
}
23+
24+
gradlePlugin {
25+
plugins {
26+
register("androidApplication"){
27+
id = "twix.android.application"
28+
implementationClass = "com.twix.convention.AndroidApplicationConventionPlugin"
29+
}
30+
register("androidLibrary") {
31+
id = "twix.android.library"
32+
implementationClass = "com.twix.convention.AndroidLibraryConventionPlugin"
33+
}
34+
register("androidCompose"){
35+
id = "twix.android.compose"
36+
implementationClass = "com.twix.convention.AndroidComposeConventionPlugin"
37+
}
38+
register("feature"){
39+
id = "twix.feature"
40+
implementationClass = "com.twix.convention.FeatureConventionPlugin"
41+
}
42+
register("koin"){
43+
id = "twix.koin"
44+
implementationClass = "com.twix.convention.KoinConventionPlugin"
45+
}
46+
register("javaLibrary"){
47+
id = "twix.java.library"
48+
implementationClass = "com.twix.convention.JvmLibraryConventionPlugin"
49+
}
50+
register("data"){
51+
id = "twix.data"
52+
implementationClass = "com.twix.convention.DataConventionPlugin"
53+
}
54+
}
55+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.twix.convention
2+
3+
import com.android.build.api.dsl.ApplicationExtension
4+
import com.twix.convention.extension.applyPlugins
5+
import com.twix.convention.extension.configureAndroid
6+
import com.twix.convention.extension.implementation
7+
import com.twix.convention.extension.library
8+
import com.twix.convention.extension.libs
9+
import org.gradle.kotlin.dsl.configure
10+
import org.gradle.kotlin.dsl.dependencies
11+
12+
class AndroidApplicationConventionPlugin : BuildLogicConventionPlugin({
13+
applyPlugins("com.android.application", "org.jetbrains.kotlin.android")
14+
15+
extensions.configure<ApplicationExtension> {
16+
configureAndroid(this)
17+
}
18+
19+
dependencies {
20+
implementation(libs.library("kotlinx-serialization-json"))
21+
}
22+
})
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.twix.convention
2+
3+
import com.android.build.api.dsl.ApplicationExtension
4+
import com.android.build.api.dsl.LibraryExtension
5+
import com.twix.convention.extension.*
6+
import org.gradle.kotlin.dsl.configure
7+
import org.gradle.kotlin.dsl.dependencies
8+
9+
class AndroidComposeConventionPlugin : BuildLogicConventionPlugin({
10+
applyPlugins("org.jetbrains.kotlin.plugin.compose")
11+
12+
pluginManager.withPlugin("com.android.application") {
13+
extensions.configure<ApplicationExtension> {
14+
configureCompose(this)
15+
}
16+
}
17+
18+
pluginManager.withPlugin("com.android.library") {
19+
extensions.configure<LibraryExtension> {
20+
configureCompose(this)
21+
}
22+
}
23+
24+
dependencies {
25+
val bom = platform(libs.library("compose-bom"))
26+
implementation(bom)
27+
implementation(libs.bundle("compose"))
28+
debugImplementation(libs.bundle("compose-debug"))
29+
}
30+
})
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.twix.convention
2+
3+
import com.android.build.api.dsl.LibraryExtension
4+
import com.twix.convention.extension.*
5+
import org.gradle.kotlin.dsl.configure
6+
import org.gradle.kotlin.dsl.dependencies
7+
8+
class AndroidLibraryConventionPlugin : BuildLogicConventionPlugin({
9+
applyPlugins(
10+
"com.android.library",
11+
"org.jetbrains.kotlin.android",
12+
"de.mannodermaus.android-junit5"
13+
)
14+
15+
extensions.configure<LibraryExtension> {
16+
configureAndroid(this)
17+
defaultConfig.testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
18+
}
19+
20+
dependencies {
21+
implementation(libs.library("kotlinx-coroutines-core"))
22+
testImplementation(libs.bundle("test-unit"))
23+
androidTestImplementation(libs.library("androidx-test-ext-junit"))
24+
}
25+
})
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.twix.convention
2+
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
6+
abstract class BuildLogicConventionPlugin(private val block: Project.() -> Unit) : Plugin<Project> {
7+
final override fun apply(target: Project) {
8+
with(target, block = block)
9+
}
10+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.twix.convention
2+
3+
import com.twix.convention.extension.*
4+
import org.gradle.kotlin.dsl.dependencies
5+
6+
class DataConventionPlugin : BuildLogicConventionPlugin({
7+
applyPlugins(
8+
"twix.android.library",
9+
"org.jetbrains.kotlin.plugin.serialization",
10+
"twix.koin"
11+
)
12+
13+
dependencies {
14+
implementation(project(":domain"))
15+
implementation(project(":core:network"))
16+
}
17+
})
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.twix.convention
2+
3+
import com.twix.convention.extension.implementation
4+
import org.gradle.kotlin.dsl.apply
5+
import org.gradle.kotlin.dsl.dependencies
6+
7+
class FeatureConventionPlugin : BuildLogicConventionPlugin({
8+
apply<AndroidLibraryConventionPlugin>()
9+
apply<KoinConventionPlugin>()
10+
apply<AndroidComposeConventionPlugin>()
11+
12+
dependencies {
13+
implementation(project(":core:design-system"))
14+
implementation(project(":core:navigation"))
15+
implementation(project(":core:ui"))
16+
implementation(project(":domain"))
17+
}
18+
})
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.twix.convention
2+
3+
import com.twix.convention.extension.*
4+
import org.gradle.api.JavaVersion
5+
import org.gradle.api.plugins.JavaPluginExtension
6+
import org.gradle.api.tasks.testing.Test
7+
import org.gradle.kotlin.dsl.configure
8+
import org.gradle.kotlin.dsl.dependencies
9+
import org.gradle.kotlin.dsl.withType
10+
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
11+
12+
class JvmLibraryConventionPlugin : BuildLogicConventionPlugin({
13+
applyPlugins("org.jetbrains.kotlin.jvm")
14+
15+
val javaVersionInt = libs.version("java").requiredVersion.toInt()
16+
val javaVersion = JavaVersion.toVersion(javaVersionInt)
17+
18+
extensions.configure<JavaPluginExtension> {
19+
sourceCompatibility = javaVersion
20+
targetCompatibility = javaVersion
21+
}
22+
23+
extensions.configure<KotlinProjectExtension> {
24+
jvmToolchain(javaVersionInt)
25+
}
26+
27+
tasks.withType<Test> {
28+
useJUnitPlatform()
29+
}
30+
31+
dependencies {
32+
implementation(libs.library("kotlinx-coroutines-core-jvm"))
33+
testImplementation(libs.bundle("test-unit"))
34+
}
35+
})

0 commit comments

Comments
 (0)