diff --git a/gradle-plugins/buildSrc/src/main/kotlin/BuildProperties.kt b/gradle-plugins/buildSrc/src/main/kotlin/BuildProperties.kt index 2d0e3e1711c..70c123b125d 100644 --- a/gradle-plugins/buildSrc/src/main/kotlin/BuildProperties.kt +++ b/gradle-plugins/buildSrc/src/main/kotlin/BuildProperties.kt @@ -14,6 +14,8 @@ object BuildProperties { fun composeVersion(project: Project): String = System.getenv("COMPOSE_GRADLE_PLUGIN_COMPOSE_VERSION") ?: project.findProperty("compose.version") as String + fun composeMaterial3Version(project: Project): String = + project.findProperty("compose.material3.version") as String fun testsAndroidxCompilerVersion(project: Project): String = project.findProperty("compose.tests.androidx.compiler.version") as String fun testsAndroidxCompilerCompatibleVersion(project: Project): String = diff --git a/gradle-plugins/buildSrc/src/main/kotlin/printAllAndroidxReplacements.kt b/gradle-plugins/buildSrc/src/main/kotlin/printAllAndroidxReplacements.kt deleted file mode 100644 index a73525a04e1..00000000000 --- a/gradle-plugins/buildSrc/src/main/kotlin/printAllAndroidxReplacements.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -import io.ktor.client.* -import io.ktor.client.request.* -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.filter -import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.runBlocking -import org.gradle.api.Project - -private const val libsRepo = "https://maven.pkg.jetbrains.space/public/p/compose/dev/org/jetbrains/compose/" -private val exceptions = listOf( - "desktop:desktop", - "compose-full", - "compose-gradle-plugin" -) - -fun Project.printAllAndroidxReplacements() = runBlocking { - val version = BuildProperties.composeVersion(project) - HttpClient().use { client -> - client - .allRecursiveFolders(libsRepo) - .map { it.removePrefix(libsRepo).removeSuffix("/") } - .filter { it.endsWith(version) } - .map { it.removeSuffix(version).removeSuffix("/") } - .map { it.replace("/", ":") } - .filter { !it.endsWith("-android") } - .filter { !it.endsWith("-android-debug") } - .filter { !it.endsWith("-android-release") } - .filter { !it.endsWith("-metadata") } - .filter { !it.endsWith("-desktop") } - .filter { !it.contains("-jvm") } - .filter { !exceptions.contains(it) } - .collect { - require(isMavenCoordsValid(it)) { - "module name isn't valid: $it" - } - println("it.replaceAndroidx(\"androidx.compose.$it\", \"org.jetbrains.compose.$it\")") - } - } -} - -private fun isMavenCoordsValid(coords: String) = coords.count { it == ':' } == 1 - -private fun HttpClient.allRecursiveFolders( - url: String -): Flow = flow { - require(url.endsWith("/")) - val response = get(url) - val folders = parseFolders(response) - for (folder in folders) { - emit("$url$folder/") - } - for (folder in folders.filter(String::isMavenPart)) { - allRecursiveFolders("$url$folder/").collect(::emit) - } -} - -private fun parseFolders( - htmlResponse: String -): Sequence = Regex("title=\"(.*?)\"") - .findAll(htmlResponse) - .map { it.groupValues[1] } - .filter { it.endsWith("/") && it != "../" } - .map { it.removeSuffix("/") } - -private fun String.isMavenPart() = all { it.isLetterOrDigit() || it == '-' } \ No newline at end of file diff --git a/gradle-plugins/compose/build.gradle.kts b/gradle-plugins/compose/build.gradle.kts index 88ae9ef5fca..02389dbc46b 100644 --- a/gradle-plugins/compose/build.gradle.kts +++ b/gradle-plugins/compose/build.gradle.kts @@ -29,6 +29,7 @@ val buildConfig = tasks.register("buildConfig", GenerateBuildConfig::class.java) classFqName.set("org.jetbrains.compose.ComposeBuildConfig") generatedOutputDir.set(buildConfigDir) fieldsToGenerate.put("composeVersion", BuildProperties.composeVersion(project)) + fieldsToGenerate.put("composeMaterial3Version", BuildProperties.composeMaterial3Version(project)) fieldsToGenerate.put("composeGradlePluginVersion", BuildProperties.deployVersion(project)) } tasks.named("compileKotlin", KotlinCompilationTask::class) { @@ -198,7 +199,3 @@ configureAllTests { systemProperty("compose.tests.summary.file", summaryDir.resolve("$name.md").absolutePath) systemProperties(project.properties.filter { it.key.startsWith("compose.") }) } - -task("printAllAndroidxReplacements") { - doLast { printAllAndroidxReplacements() } -} diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposePlugin.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposePlugin.kt index bdf4c36ba2d..d1d876fa201 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposePlugin.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposePlugin.kt @@ -31,6 +31,7 @@ import org.jetbrains.compose.web.tasks.configureWebCompatibility import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler internal val composeVersion get() = ComposeBuildConfig.composeVersion +internal val composeMaterial3Version get() = ComposeBuildConfig.composeMaterial3Version abstract class ComposePlugin : Plugin { override fun apply(project: Project) { @@ -72,8 +73,8 @@ abstract class ComposePlugin : Plugin { val animationGraphics get() = composeDependency("org.jetbrains.compose.animation:animation-graphics") val foundation get() = composeDependency("org.jetbrains.compose.foundation:foundation") val material get() = composeDependency("org.jetbrains.compose.material:material") - val material3 get() = "org.jetbrains.compose.material3:material3:1.8.2" - val material3AdaptiveNavigationSuite get() = "org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.2" + val material3 get() = composeMaterial3Dependency("org.jetbrains.compose.material3:material3") + val material3AdaptiveNavigationSuite get() = composeMaterial3Dependency("org.jetbrains.compose.material3:material3-adaptive-navigation-suite") val runtime get() = composeDependency("org.jetbrains.compose.runtime:runtime") val runtimeSaveable get() = composeDependency("org.jetbrains.compose.runtime:runtime-saveable") val ui get() = composeDependency("org.jetbrains.compose.ui:ui") @@ -161,6 +162,7 @@ fun KotlinDependencyHandler.compose(groupWithArtifact: String) = composeDependen fun DependencyHandler.compose(groupWithArtifact: String) = composeDependency(groupWithArtifact) private fun composeDependency(groupWithArtifact: String) = "$groupWithArtifact:$composeVersion" +private fun composeMaterial3Dependency(groupWithArtifact: String) = "$groupWithArtifact:$composeMaterial3Version" private fun setUpGroovyDslExtensions(project: Project) { project.plugins.withId("org.jetbrains.kotlin.multiplatform") { diff --git a/gradle-plugins/gradle.properties b/gradle-plugins/gradle.properties index 8d443b77921..07f39cab7a6 100644 --- a/gradle-plugins/gradle.properties +++ b/gradle-plugins/gradle.properties @@ -8,7 +8,8 @@ kotlin.code.style=official dev.junit.parallel=false # Default version of Compose Libraries used by Gradle plugin -compose.version=1.9.0-alpha02 +compose.version=1.9.0-rc01 +compose.material3.version=1.9.0-beta03 # The latest version of Kotlin compatible with compose.tests.compiler.version. Used only in tests/CI. compose.tests.kotlin.version=2.2.0-Beta1 # __SUPPORTED_GRADLE_VERSIONS__