Update Material3 to collections kmp structure
Change-Id: I16465c29b15df2ea5aafc85f0f28fa2323c6976c
diff --git a/compose/material3/material3/build.gradle b/compose/material3/material3/build.gradle
index f300862..9583afe 100644
--- a/compose/material3/material3/build.gradle
+++ b/compose/material3/material3/build.gradle
@@ -16,6 +16,7 @@
import androidx.build.AndroidXComposePlugin
import androidx.build.LibraryType
+import androidx.build.KmpPlatformsKt
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
@@ -25,71 +26,15 @@
id("AndroidXPaparazziPlugin")
}
-AndroidXComposePlugin.applyAndConfigureKotlinPlugin(project)
+def desktopEnabled = KmpPlatformsKt.enableDesktop(project)
-dependencies {
+androidXMultiplatform {
+ android()
+ if (desktopEnabled) desktop()
-
- if(!AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block below
- */
- implementation(libs.kotlinStdlibCommon)
- implementation("androidx.activity:activity-compose:1.5.0")
- implementation(project(":compose:animation:animation"))
- implementation(project(":compose:foundation:foundation-layout"))
- implementation("androidx.compose.ui:ui-util:1.4.2")
- api(project(":compose:foundation:foundation"))
- api("androidx.compose.material:material-icons-core:1.4.2")
- api("androidx.compose.material:material-ripple:1.4.2")
- api("androidx.compose.runtime:runtime:1.4.2")
- api("androidx.compose.ui:ui-graphics:1.4.2")
- api("androidx.compose.ui:ui:1.4.2")
- api(project(":compose:ui:ui-text"))
-
- // TODO: remove next 3 dependencies when b/202810604 is fixed
- implementation("androidx.savedstate:savedstate-ktx:1.2.1")
- implementation("androidx.lifecycle:lifecycle-runtime:2.6.1")
- implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.1")
-
- implementation("androidx.lifecycle:lifecycle-common-java8:2.6.1")
-
- testImplementation(libs.testRules)
- testImplementation(libs.testRunner)
- testImplementation(libs.junit)
- testImplementation(libs.truth)
-
- androidTestImplementation(project(":compose:material3:material3:material3-samples"))
- androidTestImplementation(project(":compose:foundation:foundation-layout"))
- androidTestImplementation(project(":compose:test-utils"))
- androidTestImplementation(project(":test:screenshot:screenshot"))
- androidTestImplementation(project(":core:core"))
- androidTestImplementation(libs.testRules)
- androidTestImplementation(libs.testRunner)
- androidTestImplementation(libs.junit)
- androidTestImplementation(libs.truth)
- androidTestImplementation(libs.dexmakerMockitoInlineExtended)
- androidTestImplementation(libs.mockitoKotlin)
- androidTestImplementation(libs.testUiautomator)
-
- lintPublish project(":compose:material3:material3-lint")
- }
-}
-
-if(AndroidXComposePlugin.isMultiplatformEnabled(project)) {
- androidXComposeMultiplatform {
- android()
- desktop()
- }
-
- kotlin {
- /*
- * When updating dependencies, make sure to make the an an analogous update in the
- * corresponding block above
- */
- sourceSets {
- commonMain.dependencies {
+ sourceSets {
+ commonMain {
+ dependencies {
implementation(libs.kotlinStdlibCommon)
implementation(project(":compose:animation:animation-core"))
@@ -103,8 +48,37 @@
implementation(project(":compose:ui:ui-util"))
implementation(project(":compose:foundation:foundation-layout"))
}
+ }
- androidMain.dependencies {
+ commonTest {
+ dependencies {
+ }
+ }
+
+ jvmMain {
+ dependsOn(commonMain)
+ dependencies {
+ }
+ }
+
+ if (desktopEnabled) {
+ skikoMain {
+ dependsOn(commonMain)
+ dependencies {
+ api(project(":compose:animation:animation-core"))
+ api(project(":compose:runtime:runtime"))
+ api(project(":compose:ui:ui"))
+ api(project(":compose:ui:ui-text"))
+ implementation(project(":compose:animation:animation"))
+ implementation(project(":compose:foundation:foundation-layout"))
+ implementation(project(":compose:ui:ui-util"))
+ }
+ }
+ }
+
+ androidMain {
+ dependsOn(jvmMain)
+ dependencies {
api("androidx.annotation:annotation:1.1.0")
implementation("androidx.activity:activity-compose:1.5.0")
@@ -115,23 +89,41 @@
implementation("androidx.lifecycle:lifecycle-common-java8:2.6.1")
}
+ }
- desktopMain.dependencies {
- implementation(libs.kotlinStdlib)
+ if (desktopEnabled) {
+ desktopMain {
+ dependsOn(skikoMain)
+ dependsOn(jvmMain)
+ dependencies {
+ implementation(libs.kotlinStdlib)
+ }
}
+ }
- // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
- // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
- // level dependencies block instead:
- // `dependencies { testImplementation(libs.robolectric) }`
- androidTest.dependencies {
+ jvmTest {
+ dependsOn(commonTest)
+ dependencies {
+ }
+ }
+
+ // TODO(b/214407011): These dependencies leak into instrumented tests as well. If you
+ // need to add Robolectric (which must be kept out of androidAndroidTest), use a top
+ // level dependencies block instead:
+ // `dependencies { testImplementation(libs.robolectric) }`
+ androidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(libs.testRules)
implementation(libs.testRunner)
implementation(libs.junit)
implementation(libs.truth)
}
+ }
- androidAndroidTest.dependencies {
+ androidAndroidTest {
+ dependsOn(jvmTest)
+ dependencies {
implementation(project(":compose:material3:material3:material3-samples"))
implementation(project(":compose:test-utils"))
implementation(project(':compose:foundation:foundation-layout'))
@@ -146,9 +138,26 @@
implementation(libs.testUiautomator)
}
}
+
+ if (desktopEnabled) {
+ desktopTest {
+ dependsOn(jvmTest)
+ dependsOn(desktopMain)
+ dependencies {
+ implementation(project(":compose:ui:ui-test-junit4"))
+ implementation(libs.truth)
+ implementation(libs.junit)
+ implementation(libs.skikoCurrentOs)
+ }
+ }
+ }
}
}
+dependencies {
+ lintPublish project(":compose:material3:material3-lint")
+}
+
androidx {
name = "Compose Material3 Components"
type = LibraryType.PUBLISHED_LIBRARY