diff --git a/build.gradle.kts b/build.gradle.kts index 0edd691..b1274b4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,13 +1,13 @@ plugins { //trick: for the same plugin versions in all sub-modules - id("com.android.application").version(Versions.GRADLE_PLUGIN).apply(false) - id("com.android.library").version(Versions.GRADLE_PLUGIN).apply(false) - id("com.vanniktech.maven.publish").version(Versions.PUBLISH_PLUGIN).apply(false) - id("io.gitlab.arturbosch.detekt").version(Versions.DETEKT_PLUGIN).apply(false) - id("org.jlleitschuh.gradle.ktlint").version(Versions.KTLINT_PLUGIN).apply(false) - id("org.jetbrains.kotlinx.kover").version(Versions.KOVER_PLUGIN).apply(false) - kotlin("android").version(Versions.KOTLIN).apply(false) - kotlin("multiplatform").version(Versions.KOTLIN).apply(false) + id("com.android.application") version libs.versions.gradlePlugin apply false + id("com.android.library").version(libs.versions.gradlePlugin).apply(false) + id("com.vanniktech.maven.publish").version(libs.versions.publishPlugin).apply(false) + id("io.gitlab.arturbosch.detekt").version(libs.versions.detektPlugin).apply(false) + id("org.jlleitschuh.gradle.ktlint").version(libs.versions.ktlintPlugin).apply(false) + id("org.jetbrains.kotlinx.kover").version(libs.versions.koverPlugin).apply(false) + kotlin("android").version(libs.versions.kotlin).apply(false) + kotlin("multiplatform").version(libs.versions.kotlin).apply(false) } tasks.register("clean", Delete::class) { diff --git a/buildSrc/src/main/kotlin/Config.kt b/buildSrc/src/main/kotlin/Config.kt deleted file mode 100644 index adcbc23..0000000 --- a/buildSrc/src/main/kotlin/Config.kt +++ /dev/null @@ -1,5 +0,0 @@ -object Config { - const val COMPILE_SDK_VERSION = 33 - const val MIN_SDK_VERSION = 23 - const val TARGET_SDK_VERSION = 33 -} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt deleted file mode 100644 index 78416c1..0000000 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ /dev/null @@ -1,67 +0,0 @@ -object Versions { - const val GRADLE_PLUGIN = "7.3.0" - const val SPM_PLUGIN = "2.0.5-arm64" - const val DETEKT_PLUGIN = "1.22.0" - const val KTLINT_PLUGIN = "11.0.0" - const val KOVER_PLUGIN = "0.6.1" - const val PUBLISH_PLUGIN = "0.24.0" - const val KOTLIN = "1.7.20" - const val COMPOSE = "1.3.3" - const val COMPOSE_FOUNDATION = "1.3.1" - const val COMPOSE_ACTIVITY = "1.6.1" - const val COMPOSE_NAVIGATION = "2.5.3" - const val COMPOSE_LIVEDATA = "1.3.3" - const val COIL = "2.2.2" - const val KTOR = "2.2.2" - const val KOIN = "3.2.0" - const val MATERIAL_DESIGN = "1.6.1" - const val MOCKK = "1.13.4" - const val MOCKK_COMMON = "1.12.5" - const val SPRING = "2.4.5" -} - -object Dependencies { - - object Spring { - const val SPRING_DEP = "org.springframework.boot:spring-boot-dependencies:${Versions.SPRING}" - const val SPRING_WEB = "org.springframework.boot:spring-boot-starter-web" - } - - object Network { - const val KTOR_NEGOTIATION = "io.ktor:ktor-client-content-negotiation:${Versions.KTOR}" - const val KTOR_SERIALIZATION = "io.ktor:ktor-serialization-kotlinx-json:${Versions.KTOR}" - const val KTOR_CORE = "io.ktor:ktor-client-core:${Versions.KTOR}" - const val KTOR_LOGGING = "io.ktor:ktor-client-logging:${Versions.KTOR}" - const val KTOR_ANDROID = "io.ktor:ktor-client-android:${Versions.KTOR}" - const val KTOR_IOS = "io.ktor:ktor-client-ios:${Versions.KTOR}" - const val KTOR_DARWIN = "io.ktor:ktor-client-darwin:${Versions.KTOR}" - const val KTOR_OKHTTP = "io.ktor:ktor-client-okhttp:${Versions.KTOR}" - } - - object DI { - const val KOIN_CORE = "io.insert-koin:koin-core:${Versions.KOIN}" - const val KOIN_ANDROID = "io.insert-koin:koin-android:${Versions.KOIN}" - const val KOIN_COMPOSE = "io.insert-koin:koin-androidx-compose:${Versions.KOIN}" - } - - object UI { - const val MATERIAL_DESIGN = "com.google.android.material:${Versions.MATERIAL_DESIGN}" - const val COMPOSE_UI = "androidx.activity:activity-compose:${Versions.COMPOSE}" - const val COMPOSE_TOOLING = "androidx.compose.ui:ui-tooling:${Versions.COMPOSE}" - const val COMPOSE_TOOLING_PREVIEW = "androidx.compose.ui:ui-tooling-preview:${Versions.COMPOSE}" - const val COMPOSE_FOUNDATION = "androidx.compose.foundation:foundation:${Versions.COMPOSE_FOUNDATION}" - const val COMPOSE_MATERIAL = "androidx.compose.material:material:${Versions.COMPOSE_FOUNDATION}" - const val COMPOSE_ACTIVITY = "androidx.activity:activity-compose:${Versions.COMPOSE_ACTIVITY}" - const val COMPOSE_NAVIGATION = "androidx.navigation:navigation-compose:${Versions.COMPOSE_NAVIGATION}" - const val COMPOSE_LIVEDATA = "androidx.compose.runtime:runtime-livedata:${Versions.COMPOSE_LIVEDATA}" - const val COIL = "io.coil-kt:coil-compose:${Versions.COIL}" - } - - object Test { - const val MOCKK_COMMON = "io.mockk:mockk-common:${Versions.MOCKK_COMMON}" - const val MOCKK = "io.mockk:mockk:${Versions.MOCKK}" - const val MOCKK_JVM = "io.mockk:mockk-jvm:${Versions.MOCKK}" - const val KTOR = "io.ktor:ktor-client-mock:${Versions.KTOR}" - const val KOIN = "io.insert-koin:koin-test:${Versions.KOIN}" - } -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..a1be8d5 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,63 @@ +[versions] +coil = "2.2.2" +compose = "1.3.3" +composeActivity = "1.6.1" +composeFoundation = "1.3.1" +composeLivedata = "1.3.3" +composeNavigation = "2.5.3" +config-compile-sdk-version = "33" +config-min-sdk-version = "23" +config-target-sdk-version = "33" +detektPlugin = "1.22.0" +gradlePlugin = "7.3.0" +koin = "3.2.0" +kotlin = "1.7.20" +koverPlugin = "0.6.1" +ktlintPlugin = "11.0.0" +ktor = "2.2.2" +mockk = "1.13.4" +mockkCommon = "1.12.5" +publishPlugin = "0.24.0" +spmPlugin = "2.0.5-arm64" +spring = "2.4.5" + +[libraries] +# Spring +spring-boot-dependencies = { group = "org.springframework.boot", name = "spring-boot-dependencies", version.ref = "spring" } +spring-boot-web = { group = "org.springframework.boot", name = "spring-boot-starter-web" } + +#Network +ktor-android = { group = "io.ktor", name = "ktor-client-android", version.ref = "ktor" } +ktor-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" } +ktor-darwin = { group = "io.ktor", name = "ktor-client-darwin", version.ref = "ktor" } +ktor-ios = { group = "io.ktor", name = "ktor-client-ios", version.ref = "ktor" } +ktor-logging = { group = "io.ktor", name = "ktor-client-logging", version.ref = "ktor" } +ktor-negotiation = { group = "io.ktor", name = "ktor-client-content-negotiation", version.ref = "ktor" } +ktor-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "ktor" } +ktor-serialization = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor" } + +# DI +koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" } +koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" } +koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" } + +#UI +androidx-compose-activity = { group = "androidx.activity", name = "activity-compose", version.ref = "composeActivity" } +androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "composeFoundation" } +androidx-compose-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata", version.ref = "composeLivedata" } +androidx-compose-material = { group = "androidx.compose.material", name = "material", version.ref = "composeFoundation" } +androidx-compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } +androidx-compose-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "compose" } +androidx-compose-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "compose" } +coil = { group = "io.coil-kt", name = "coil-compose", version.ref = "coil" } + +#Test +koin-test = { group = "io.insert-koin", name = "koin-test", version.ref = "koin" } +ktor-client-mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" } +mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } +mockk-common = { group = "io.mockk", name = "mockk-common", version.ref = "mockkCommon" } +mockk-jvm = { group = "io.mockk", name = "mockk-jvm", version.ref = "mockk" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "gradlePlugin" } +android-library = { id = "com.android.library", version.ref = "gradlePlugin" } \ No newline at end of file diff --git a/sample/android/build.gradle.kts b/sample/android/build.gradle.kts index 6e73bef..e578ce8 100644 --- a/sample/android/build.gradle.kts +++ b/sample/android/build.gradle.kts @@ -7,11 +7,11 @@ plugins { android { namespace = "co.yml.ychat.android" - compileSdk = Config.COMPILE_SDK_VERSION + compileSdk = libs.versions.config.compile.sdk.version.get().toInt() defaultConfig { applicationId = "co.yml.ychat.android" - minSdk = Config.MIN_SDK_VERSION - targetSdk = Config.TARGET_SDK_VERSION + minSdk = libs.versions.config.min.sdk.version.get().toInt() + targetSdk = libs.versions.config.target.sdk.version.get().toInt() versionCode = 1 versionName = "1.0" @@ -45,16 +45,15 @@ android { dependencies { implementation(project(":ychat")) - implementation(Dependencies.UI.COMPOSE_UI) - implementation(Dependencies.UI.COMPOSE_TOOLING) - implementation(Dependencies.UI.COMPOSE_TOOLING_PREVIEW) - implementation(Dependencies.UI.COMPOSE_FOUNDATION) - implementation(Dependencies.UI.COMPOSE_MATERIAL) - implementation(Dependencies.UI.COMPOSE_ACTIVITY) - implementation(Dependencies.UI.COMPOSE_NAVIGATION) - implementation(Dependencies.UI.COMPOSE_LIVEDATA) - implementation(Dependencies.UI.COIL) - implementation(Dependencies.DI.KOIN_CORE) - implementation(Dependencies.DI.KOIN_ANDROID) - implementation(Dependencies.DI.KOIN_COMPOSE) + implementation(libs.androidx.compose.tooling) + implementation(libs.androidx.compose.tooling.preview) + implementation(libs.androidx.compose.foundation) + implementation(libs.androidx.compose.material) + implementation(libs.androidx.compose.activity) + implementation(libs.androidx.compose.navigation) + implementation(libs.androidx.compose.livedata) + implementation(libs.coil) + implementation(libs.koin.core) + implementation(libs.koin.android) + implementation(libs.koin.compose) } diff --git a/sample/jvm/build.gradle.kts b/sample/jvm/build.gradle.kts index 4c796c8..a888c5a 100644 --- a/sample/jvm/build.gradle.kts +++ b/sample/jvm/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("org.springframework.boot").version(Versions.SPRING) + id("org.springframework.boot").version(libs.versions.spring) java } @@ -10,6 +10,6 @@ java { dependencies { implementation(project(":ychat")) - implementation(platform(Dependencies.Spring.SPRING_DEP)) - implementation(Dependencies.Spring.SPRING_WEB) + implementation(platform(libs.spring.boot.dependencies)) + implementation(libs.spring.boot.web) } diff --git a/ychat-core/build.gradle.kts b/ychat-core/build.gradle.kts index 5285d2a..6ba9d80 100644 --- a/ychat-core/build.gradle.kts +++ b/ychat-core/build.gradle.kts @@ -37,23 +37,23 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - api(Dependencies.Network.KTOR_NEGOTIATION) - api(Dependencies.Network.KTOR_SERIALIZATION) - api(Dependencies.Network.KTOR_CORE) - api(Dependencies.Network.KTOR_LOGGING) + api(libs.ktor.negotiation) + api(libs.ktor.serialization) + api(libs.ktor.core) + api(libs.ktor.logging) } } val commonTest by getting { dependencies { implementation(kotlin("test")) - implementation(Dependencies.Test.MOCKK_COMMON) - implementation(Dependencies.Test.KTOR) - implementation(Dependencies.Test.KOIN) + implementation(libs.mockk.common) + implementation(libs.ktor.client.mock) + implementation(libs.koin.test) } } val androidMain by getting { dependencies { - implementation(Dependencies.Network.KTOR_OKHTTP) + implementation(libs.ktor.okhttp) } } val iosX64Main by getting @@ -65,7 +65,7 @@ kotlin { iosArm64Main.dependsOn(this) iosSimulatorArm64Main.dependsOn(this) dependencies { - implementation(Dependencies.Network.KTOR_IOS) + implementation(libs.ktor.ios) } } val macosArm64Main by getting @@ -75,7 +75,7 @@ kotlin { macosArm64Main.dependsOn(this) macosX64Main.dependsOn(this) dependencies { - implementation(Dependencies.Network.KTOR_DARWIN) + implementation(libs.ktor.darwin) } } val iosTest by creating { @@ -83,12 +83,12 @@ kotlin { } val jvmMain by getting { dependencies { - implementation(Dependencies.Network.KTOR_OKHTTP) + implementation(libs.ktor.okhttp) } } val jvmTest by getting { dependencies { - implementation(Dependencies.Test.MOCKK_JVM) + implementation(libs.mockk.jvm) } } } @@ -96,10 +96,10 @@ kotlin { android { namespace = "co.yml.ychat.core" - compileSdk = Config.COMPILE_SDK_VERSION + compileSdk = libs.versions.config.compile.sdk.version.get().toInt() defaultConfig { - minSdk = Config.MIN_SDK_VERSION - targetSdk = Config.TARGET_SDK_VERSION + minSdk = libs.versions.config.min.sdk.version.get().toInt() + targetSdk = libs.versions.config.target.sdk.version.get().toInt() } } diff --git a/ychat/build.gradle.kts b/ychat/build.gradle.kts index eb10f9f..877359e 100644 --- a/ychat/build.gradle.kts +++ b/ychat/build.gradle.kts @@ -1,7 +1,7 @@ plugins { kotlin("multiplatform") - kotlin("plugin.serialization").version(Versions.KOTLIN) - id("io.github.luca992.multiplatform-swiftpackage").version(Versions.SPM_PLUGIN) + kotlin("plugin.serialization").version(libs.versions.kotlin) + id("io.github.luca992.multiplatform-swiftpackage").version(libs.versions.spmPlugin) id("com.vanniktech.maven.publish") id("com.android.library") id("io.gitlab.arturbosch.detekt") @@ -53,22 +53,22 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Dependencies.DI.KOIN_CORE) + implementation(libs.koin.core) implementation(project(":ychat-core")) } } val commonTest by getting { dependencies { implementation(kotlin("test")) - implementation(Dependencies.Test.MOCKK_COMMON) - implementation(Dependencies.Test.KTOR) - implementation(Dependencies.Test.KOIN) + implementation(libs.mockk.common) + implementation(libs.ktor.client.mock) + implementation(libs.koin.test) } } val androidMain by getting val androidTest by getting { dependencies { - implementation(Dependencies.Test.MOCKK) + implementation(libs.mockk) } } val iosX64Main by getting @@ -99,7 +99,7 @@ kotlin { val jvmMain by getting val jvmTest by getting { dependencies { - implementation(Dependencies.Test.MOCKK_JVM) + implementation(libs.mockk.jvm) } } } @@ -107,10 +107,10 @@ kotlin { android { namespace = "co.yml.ychat" - compileSdk = Config.COMPILE_SDK_VERSION + compileSdk = libs.versions.config.compile.sdk.version.get().toInt() defaultConfig { - minSdk = Config.MIN_SDK_VERSION - targetSdk = Config.TARGET_SDK_VERSION + minSdk = libs.versions.config.min.sdk.version.get().toInt() + targetSdk = libs.versions.config.target.sdk.version.get().toInt() } }