Skip to content

Commit 998830a

Browse files
committed
chore: Migrate to version catalog for dependency management and update Gradle configuration
1 parent de802b3 commit 998830a

10 files changed

Lines changed: 174 additions & 179 deletions

File tree

build.gradle.kts

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
1-
buildscript {
2-
extra["kotlin_version"] = "2.3.0"
3-
extra["android_min_sdk_version"] = 21
4-
extra["android_compile_sdk_version"] = 36
5-
extra["jdk_version"] = 17
6-
repositories {
7-
gradlePluginPortal()
8-
google()
9-
mavenCentral()
10-
}
11-
dependencies {
12-
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${rootProject.extra["kotlin_version"]}")
13-
classpath("org.jetbrains.kotlin:compose-compiler-gradle-plugin:${rootProject.extra["kotlin_version"]}")
14-
classpath("com.android.tools.build:gradle:9.0.0")
15-
classpath("org.jetbrains.compose:compose-gradle-plugin:1.10.0")
16-
classpath("org.jetbrains.kotlin:kotlin-serialization:${rootProject.extra["kotlin_version"]}")
17-
}
1+
plugins {
2+
alias(libs.plugins.kotlin.multiplatform) apply false
3+
alias(libs.plugins.kotlin.compose) apply false
4+
alias(libs.plugins.kotlin.serialization) apply false
5+
alias(libs.plugins.android.application) apply false
6+
alias(libs.plugins.android.kotlin.multiplatform.library) apply false
7+
alias(libs.plugins.compose.multiplatform) apply false
188
}
19-
allprojects {
20-
repositories {
21-
google()
22-
mavenCentral()
23-
}
24-
}

convention-plugins/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ repositories {
77
}
88

99
dependencies {
10-
implementation("com.vanniktech:gradle-maven-publish-plugin:0.34.0")
10+
implementation(libs.vanniktech.gradle.maven.publish.plugin)
1111
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
pluginManagement {
2+
repositories {
3+
gradlePluginPortal()
4+
google()
5+
mavenCentral()
6+
}
7+
}
8+
9+
dependencyResolutionManagement {
10+
repositories {
11+
gradlePluginPortal()
12+
google()
13+
mavenCentral()
14+
}
15+
versionCatalogs {
16+
create("libs") {
17+
from(files("../gradle/libs.versions.toml"))
18+
}
19+
}
20+
}

gradle.properties

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,8 @@ org.jetbrains.compose.experimental.uikit.enabled=true
1515
android.useAndroidX=true
1616
android.nonTransitiveRClass=false
1717
android.nonFinalResIds=false
18-
android.defaults.buildfeatures.resvalues=true
19-
android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
20-
android.enableAppCompileTimeRClass=false
21-
android.usesSdkInManifest.disallowed=false
22-
android.uniquePackageNames=false
23-
android.dependency.useConstraints=true
24-
android.r8.strictFullModeForKeepRules=false
25-
android.r8.optimizedResourceShrinking=false
26-
android.builtInKotlin=false
27-
android.newDsl=false
2818

2919
gnsp.disableApplyOnlyOnRootProjectEnforcement=true
3020

31-
xcodeproj=./iosSample
21+
xcodeproj=./iosSample
22+

gradle/libs.versions.toml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
[versions]
2+
kotlin = "2.3.10"
3+
agp = "9.0.0"
4+
compose = "1.10.1"
5+
composeMaterial3 = "1.9.0"
6+
composeMaterialIconsExtended = "1.7.3"
7+
androidx-navigation = "2.9.2"
8+
androidx-activity-compose = "1.12.3"
9+
kotlinx-serialization-json = "1.10.0"
10+
kotlinx-coroutines = "1.10.2"
11+
kotlinx-browser = "0.5.0"
12+
vanniktech = "0.36.0"
13+
compileSdk = "36"
14+
minSdk = "21"
15+
jdk = "17"
16+
17+
[libraries]
18+
androidx-navigation-compose = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "androidx-navigation" }
19+
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" }
20+
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" }
21+
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
22+
kotlinx-browser = { module = "org.jetbrains.kotlinx:kotlinx-browser", version.ref = "kotlinx-browser" }
23+
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose" }
24+
compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose" }
25+
compose-material = { module = "org.jetbrains.compose.material:material", version.ref = "compose" }
26+
compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "composeMaterial3" }
27+
compose-material-icons-extended = { module = "org.jetbrains.compose.material:material-icons-extended", version.ref = "composeMaterialIconsExtended" }
28+
compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose" }
29+
compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "compose" }
30+
compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose" }
31+
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose" }
32+
compose-desktop = { module = "org.jetbrains.compose.desktop:desktop-jvm", version.ref = "compose" }
33+
vanniktech-gradle-maven-publish-plugin = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "vanniktech" }
34+
35+
[plugins]
36+
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
37+
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
38+
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
39+
android-application = { id = "com.android.application", version.ref = "agp" }
40+
android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }
41+
compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose" }
42+
vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktech" }

sample/build.gradle.kts

Lines changed: 28 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,26 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
66
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
77

88
plugins {
9-
kotlin("multiplatform")
10-
id("com.android.application")
11-
id("org.jetbrains.compose")
12-
kotlin("plugin.compose")
13-
kotlin("plugin.serialization")
9+
alias(libs.plugins.kotlin.multiplatform)
10+
alias(libs.plugins.android.kotlin.multiplatform.library)
11+
alias(libs.plugins.compose.multiplatform)
12+
alias(libs.plugins.kotlin.compose)
13+
alias(libs.plugins.kotlin.serialization)
1414
}
1515

1616
kotlin {
17-
androidTarget {
18-
compilerOptions.jvmTarget = JvmTarget.fromTarget("${rootProject.extra["jdk_version"]}")
17+
jvmToolchain(libs.versions.jdk.get().toInt())
18+
android {
19+
namespace = "com.softartdev.sample"
20+
compileSdk = libs.versions.compileSdk.get().toInt()
21+
minSdk = 23
22+
withJava()
23+
androidResources {
24+
enable = true
25+
}
26+
compilerOptions {
27+
jvmTarget = JvmTarget.fromTarget(libs.versions.jdk.get())
28+
}
1929
}
2030
jvm("desktop")
2131
listOf(
@@ -36,7 +46,6 @@ kotlin {
3646
commonWebpackConfig {
3747
outputFileName = "composeApp.js"
3848
devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
39-
// Serve sources to debug inside browser
4049
static(rootDirPath)
4150
static(projectDirPath)
4251
}
@@ -48,61 +57,24 @@ kotlin {
4857
commonMain.dependencies {
4958
api(project(":theme:theme-material"))
5059
api(project(":theme:theme-material3"))
51-
implementation(compose.runtime)
52-
implementation(compose.foundation)
53-
implementation(compose.material)
54-
implementation(compose.ui)
55-
implementation(compose.components.resources)
56-
implementation(compose.preview)
57-
implementation("org.jetbrains.androidx.navigation:navigation-compose:2.9.1")
58-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
60+
implementation(libs.compose.runtime)
61+
implementation(libs.compose.foundation)
62+
implementation(libs.compose.material)
63+
implementation(libs.compose.ui)
64+
implementation(libs.compose.components.resources)
65+
implementation(libs.compose.ui.tooling.preview)
66+
implementation(libs.androidx.navigation.compose)
67+
implementation(libs.kotlinx.serialization.json)
5968
}
6069
androidMain.dependencies {
61-
implementation("androidx.activity:activity-compose:1.12.2")
62-
implementation(compose.uiTooling)
70+
implementation(libs.androidx.activity.compose)
71+
implementation(libs.compose.ui.tooling)
6372
}
6473
val desktopMain by getting
6574
desktopMain.dependencies {
66-
implementation(compose.desktop.currentOs)
67-
}
68-
}
69-
}
70-
71-
android {
72-
namespace = "com.softartdev.sample"
73-
compileSdk = rootProject.extra["android_compile_sdk_version"] as Int
74-
75-
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
76-
sourceSets["main"].res.srcDirs("src/androidMain/res")
77-
sourceSets["main"].resources.srcDirs("src/commonMain/resources")
78-
79-
defaultConfig {
80-
applicationId = "com.softartdev.sample"
81-
minSdk = 23
82-
targetSdk = compileSdk
83-
versionCode = 1
84-
versionName = "1.0"
85-
}
86-
packaging {
87-
resources {
88-
excludes += "/META-INF/{AL2.0,LGPL2.1}"
89-
}
90-
}
91-
buildTypes {
92-
getByName("release") {
93-
isMinifyEnabled = false
75+
implementation(libs.compose.desktop)
9476
}
9577
}
96-
compileOptions {
97-
sourceCompatibility = JavaVersion.toVersion(rootProject.extra["jdk_version"] as Int)
98-
targetCompatibility = JavaVersion.toVersion(rootProject.extra["jdk_version"] as Int)
99-
}
100-
buildFeatures {
101-
compose = true
102-
}
103-
dependencies {
104-
debugImplementation(compose.uiTooling)
105-
}
10678
}
10779

10880
compose.desktop {

settings.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ pluginManagement {
77
mavenCentral()
88
}
99
}
10+
dependencyResolutionManagement {
11+
repositories {
12+
google()
13+
mavenCentral()
14+
}
15+
}
1016
plugins {
1117
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
1218
}
Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,32 @@
11
@file:OptIn(ExperimentalWasmDsl::class)
22

3-
import com.android.build.gradle.internal.lint.AndroidLintAnalysisTask
4-
import com.android.build.gradle.internal.lint.LintModelWriterTask
53
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
64
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
75

86
plugins {
9-
kotlin("multiplatform")
10-
id("org.jetbrains.compose")
11-
id("org.jetbrains.kotlin.plugin.compose")
12-
id("com.android.library")
7+
alias(libs.plugins.kotlin.multiplatform)
8+
alias(libs.plugins.compose.multiplatform)
9+
alias(libs.plugins.kotlin.compose)
10+
alias(libs.plugins.android.kotlin.multiplatform.library)
1311
id("convention.publication")
1412
}
13+
1514
group = project.property("GROUP").toString()
1615
version = project.property("VERSION").toString()
1716

1817
kotlin {
19-
jvmToolchain(rootProject.extra["jdk_version"] as Int)
18+
jvmToolchain(libs.versions.jdk.get().toInt())
2019
jvm("desktop") {
21-
compilerOptions.jvmTarget = JvmTarget.fromTarget("${rootProject.extra["jdk_version"]}")
20+
compilerOptions.jvmTarget = JvmTarget.fromTarget(libs.versions.jdk.get())
2221
}
23-
androidTarget {
24-
publishLibraryVariants("release", "debug")
22+
android {
23+
namespace = "com.softartdev.theme.material"
24+
compileSdk = libs.versions.compileSdk.get().toInt()
25+
minSdk = libs.versions.minSdk.get().toInt()
26+
withJava()
27+
compilerOptions {
28+
jvmTarget = JvmTarget.fromTarget(libs.versions.jdk.get())
29+
}
2530
}
2631
iosX64()
2732
iosArm64()
@@ -33,36 +38,21 @@ kotlin {
3338
sourceSets {
3439
commonMain.dependencies {
3540
api(project(":theme:theme-prefs"))
36-
api(compose.foundation)
37-
api(compose.material)
38-
api(compose.materialIconsExtended)
39-
implementation(compose.preview)
41+
api(libs.compose.foundation)
42+
api(libs.compose.material)
43+
api(libs.compose.material.icons.extended)
44+
implementation(libs.compose.ui.tooling.preview)
4045
}
4146
commonTest.dependencies {
4247
implementation(kotlin("test"))
4348
}
4449
androidMain.dependencies {
45-
implementation(compose.uiTooling)
50+
implementation(libs.compose.ui.tooling)
4651
}
4752
}
4853
explicitApi()
4954
}
50-
android {
51-
compileSdk = rootProject.extra["android_compile_sdk_version"] as Int
52-
defaultConfig.minSdk = rootProject.extra["android_min_sdk_version"] as Int
53-
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
54-
compileOptions {
55-
sourceCompatibility = JavaVersion.toVersion(rootProject.extra["jdk_version"] as Int)
56-
targetCompatibility = JavaVersion.toVersion(rootProject.extra["jdk_version"] as Int)
57-
}
58-
namespace = "com.softartdev.theme.material"
59-
}
55+
6056
tasks.withType<AbstractPublishToMaven>().configureEach {
6157
dependsOn(tasks.withType<Sign>())
6258
}
63-
tasks.withType<AndroidLintAnalysisTask>{
64-
dependsOn("generateResourceAccessorsForAndroidUnitTest")
65-
}
66-
tasks.withType<LintModelWriterTask>{
67-
dependsOn("generateResourceAccessorsForAndroidUnitTest")
68-
}

0 commit comments

Comments
 (0)