Browse Source

Deprecate Gradle plugin dependency aliases (#5462)

Deprecate Gradle plugin dependency aliases and provide direct
replacement.

Fixes [CMP-7613](https://youtrack.jetbrains.com/issue/CMP-7613) Consider
deprecating aliases `compose.material3`, etc in favour of using Gradle
version catalog

## Testing
Run a sample app, open build.gradle.kts, apply all suggested
replacements.

## Release Notes
### Migration Notes - Multiple Platforms
- Dependency aliases in Gradle plugin (e.g. `compose.ui`) are now
deprecated. Use provided direct artifact coordinates and add them to the
version catalog.
ok/benchmarks_kjs_target
Victor Kropp 2 months ago committed by GitHub
parent
commit
f5c85b77d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 52
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposePlugin.kt
  2. 1
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ExperimentalComposeLibrary.kt
  3. 27
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/dsl/ExperimentalExtension.kt
  4. 18
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/dsl/ExperimentalWebApplication.kt
  5. 34
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/dsl/ExperimentalWebExtension.kt
  6. 14
      gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/web/tasks/ExperimentalUnpackSkikoWasmRuntimeTask.kt

52
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposePlugin.kt

@ -14,11 +14,9 @@ import org.gradle.api.artifacts.dsl.DependencyHandler @@ -14,11 +14,9 @@ import org.gradle.api.artifacts.dsl.DependencyHandler
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.plugins.ExtensionAware
import org.jetbrains.compose.android.AndroidExtension
import org.jetbrains.compose.desktop.DesktopExtension
import org.jetbrains.compose.desktop.application.internal.configureDesktop
import org.jetbrains.compose.desktop.preview.internal.initializePreview
import org.jetbrains.compose.experimental.dsl.ExperimentalExtension
import org.jetbrains.compose.experimental.internal.configureExperimentalTargetsFlagsCheck
import org.jetbrains.compose.internal.KOTLIN_MPP_PLUGIN_ID
import org.jetbrains.compose.internal.mppExt
@ -37,8 +35,6 @@ abstract class ComposePlugin : Plugin<Project> { @@ -37,8 +35,6 @@ abstract class ComposePlugin : Plugin<Project> {
override fun apply(project: Project) {
val composeExtension = project.extensions.create("compose", ComposeExtension::class.java, project)
val desktopExtension = composeExtension.extensions.create("desktop", DesktopExtension::class.java)
val androidExtension = composeExtension.extensions.create("android", AndroidExtension::class.java)
val experimentalExtension = composeExtension.extensions.create("experimental", ExperimentalExtension::class.java)
val resourcesExtension = composeExtension.extensions.create("resources", ResourcesExtension::class.java)
project.dependencies.extensions.add("compose", Dependencies(project))
@ -69,41 +65,64 @@ abstract class ComposePlugin : Plugin<Project> { @@ -69,41 +65,64 @@ abstract class ComposePlugin : Plugin<Project> {
@Suppress("DEPRECATION")
class Dependencies(project: Project) {
val desktop = DesktopDependencies
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.animation:animation:${ComposeBuildConfig.composeVersion}\""))
val animation get() = composeDependency("org.jetbrains.compose.animation:animation")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.animation:animation-graphics:${ComposeBuildConfig.composeVersion}\""))
val animationGraphics get() = composeDependency("org.jetbrains.compose.animation:animation-graphics")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.foundation:foundation:${ComposeBuildConfig.composeVersion}\""))
val foundation get() = composeDependency("org.jetbrains.compose.foundation:foundation")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material:material:${ComposeBuildConfig.composeVersion}\""))
val material get() = composeDependency("org.jetbrains.compose.material:material")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material3:material3:${ComposeBuildConfig.composeMaterial3Version}\""))
val material3 get() = composeMaterial3Dependency("org.jetbrains.compose.material3:material3")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material3:material3-adaptive-navigation-suite:${ComposeBuildConfig.composeMaterial3Version}\""))
val material3AdaptiveNavigationSuite get() = composeMaterial3Dependency("org.jetbrains.compose.material3:material3-adaptive-navigation-suite")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.runtime:runtime:${ComposeBuildConfig.composeVersion}\""))
val runtime get() = composeDependency("org.jetbrains.compose.runtime:runtime")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.runtime:runtime-saveable:${ComposeBuildConfig.composeVersion}\""))
val runtimeSaveable get() = composeDependency("org.jetbrains.compose.runtime:runtime-saveable")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui:${ComposeBuildConfig.composeVersion}\""))
val ui get() = composeDependency("org.jetbrains.compose.ui:ui")
@Deprecated("Use desktop.uiTestJUnit4", replaceWith = ReplaceWith("desktop.uiTestJUnit4"))
@ExperimentalComposeLibrary
val uiTestJUnit4 get() = composeDependency("org.jetbrains.compose.ui:ui-test-junit4")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-test:${ComposeBuildConfig.composeVersion}\""))
@ExperimentalComposeLibrary
val uiTest get() = composeDependency("org.jetbrains.compose.ui:ui-test")
@Deprecated("Use org.jetbrains.compose.ui:ui-tooling-preview module instead", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-tooling:${ComposeBuildConfig.composeVersion}\""))
val uiTooling get() = composeDependency("org.jetbrains.compose.ui:ui-tooling")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-util:${ComposeBuildConfig.composeVersion}\""))
val uiUtil get() = composeDependency("org.jetbrains.compose.ui:ui-util")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-tooling-preview:${ComposeBuildConfig.composeVersion}\""))
val preview get() = composeDependency("org.jetbrains.compose.ui:ui-tooling-preview")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material:material-icons-extended:1.7.3\""))
val materialIconsExtended get() = "org.jetbrains.compose.material:material-icons-extended:1.7.3"
@Deprecated("Specify dependency via version catalog")
val components get() = CommonComponentsDependencies
@Deprecated("Use compose.html", replaceWith = ReplaceWith("html"))
@Deprecated("Use compose.html", replaceWith = ReplaceWith("html"), level = DeprecationLevel.ERROR)
val web: WebDependencies get() = WebDependencies
@Deprecated("Specify dependency via version catalog")
val html: HtmlDependencies get() = HtmlDependencies
}
@Deprecated("Specify dependency via version catalog")
object DesktopDependencies {
@Deprecated("Specify dependency via version catalog")
val components = DesktopComponentsDependencies
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop:${ComposeBuildConfig.composeVersion}\""))
val common = composeDependency("org.jetbrains.compose.desktop:desktop")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-linux-x64:${ComposeBuildConfig.composeVersion}\""))
val linux_x64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-linux-x64")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-linux-arm64:${ComposeBuildConfig.composeVersion}\""))
val linux_arm64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-linux-arm64")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-windows-x64:${ComposeBuildConfig.composeVersion}\""))
val windows_x64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-windows-x64")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-windows-arm64:${ComposeBuildConfig.composeVersion}\""))
val windows_arm64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-windows-arm64")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-macos-x64:${ComposeBuildConfig.composeVersion}\""))
val macos_x64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-macos-x64")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-macos-arm64:${ComposeBuildConfig.composeVersion}\""))
val macos_arm64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-macos-arm64")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-test-junit4:${ComposeBuildConfig.composeVersion}\""))
val uiTestJUnit4 get() = composeDependency("org.jetbrains.compose.ui:ui-test-junit4")
val currentOs by lazy {
@ -111,47 +130,56 @@ abstract class ComposePlugin : Plugin<Project> { @@ -111,47 +130,56 @@ abstract class ComposePlugin : Plugin<Project> {
}
}
@Deprecated("Specify dependency via version catalog")
object CommonComponentsDependencies {
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.components:components-resources:${ComposeBuildConfig.composeVersion}\""))
val resources = composeDependency("org.jetbrains.compose.components:components-resources")
@Deprecated(
"Use org.jetbrains.compose.ui:ui-tooling-preview module instead",
ReplaceWith("compose.preview")
)
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-tooling-preview:${ComposeBuildConfig.composeVersion}\""))
val uiToolingPreview = composeDependency("org.jetbrains.compose.components:components-ui-tooling-preview")
}
@Deprecated("Specify dependency via version catalog")
object DesktopComponentsDependencies {
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.components:components-splitpane:${ComposeBuildConfig.composeVersion}\""))
@ExperimentalComposeLibrary
val splitPane = composeDependency("org.jetbrains.compose.components:components-splitpane")
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.components:components-animatedimage:${ComposeBuildConfig.composeVersion}\""))
@ExperimentalComposeLibrary
val animatedImage = composeDependency("org.jetbrains.compose.components:components-animatedimage")
}
@Deprecated("Use compose.html")
object WebDependencies {
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-core:${ComposeBuildConfig.composeVersion}\""))
val core by lazy {
composeDependency("org.jetbrains.compose.html:html-core")
}
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-svg:${ComposeBuildConfig.composeVersion}\""))
val svg by lazy {
composeDependency("org.jetbrains.compose.html:html-svg")
}
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-test-utils:${ComposeBuildConfig.composeVersion}\""))
val testUtils by lazy {
composeDependency("org.jetbrains.compose.html:html-test-utils")
}
}
@Deprecated("Specify dependency via version catalog")
object HtmlDependencies {
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-core:${ComposeBuildConfig.composeVersion}\""))
val core by lazy {
composeDependency("org.jetbrains.compose.html:html-core")
}
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-svg:${ComposeBuildConfig.composeVersion}\""))
val svg by lazy {
composeDependency("org.jetbrains.compose.html:html-svg")
}
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-test-utils:${ComposeBuildConfig.composeVersion}\""))
val testUtils by lazy {
composeDependency("org.jetbrains.compose.html:html-test-utils")
}

1
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ExperimentalComposeLibrary.kt

@ -2,4 +2,5 @@ package org.jetbrains.compose @@ -2,4 +2,5 @@ package org.jetbrains.compose
// We write explicitly about OptIn, because IDEA doesn't suggest it.
@RequiresOptIn("This library is experimental and can be unstable. Add @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) annotation.")
@Deprecated("Please specify dependency via version catalog")
annotation class ExperimentalComposeLibrary

27
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/dsl/ExperimentalExtension.kt

@ -1,27 +0,0 @@ @@ -1,27 +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.
*/
package org.jetbrains.compose.experimental.dsl
import org.gradle.api.Action
import org.gradle.api.model.ObjectFactory
import javax.inject.Inject
abstract class ExperimentalExtension @Inject constructor(
objects: ObjectFactory
) {
@Deprecated(
message = "Starting from 1.6.10, Compose for Web goes to Alpha. Experimental configuration is not needed anymore.",
)
val web: ExperimentalWebExtension = objects.newInstance(ExperimentalWebExtension::class.java)
@Deprecated(
message = "Starting from 1.6.10, Compose for Web goes to Alpha. Experimental configuration is not needed anymore."
)
fun web(action: Action<ExperimentalWebExtension>) {
action.execute(web)
}
}

18
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/dsl/ExperimentalWebApplication.kt

@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
/*
* Copyright 2020-2022 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.
*/
package org.jetbrains.compose.experimental.dsl
import javax.inject.Inject
@Deprecated(
message = "Starting from 1.6.10, Compose for Web goes to Alpha. Experimental configuration is not needed anymore.",
)
abstract class ExperimentalWebApplication @Inject constructor(
@Suppress("unused")
val name: String,
) {
}

34
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/dsl/ExperimentalWebExtension.kt

@ -1,34 +0,0 @@ @@ -1,34 +0,0 @@
/*
* Copyright 2020-2022 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.
*/
package org.jetbrains.compose.experimental.dsl
import org.gradle.api.Action
import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.ExtensionAware
import javax.inject.Inject
@Deprecated(
message = "Starting from 1.6.10, Compose for Web goes to Alpha. Experimental configuration is not needed anymore.",
)
abstract class ExperimentalWebExtension @Inject constructor(private val objectFactory: ObjectFactory) : ExtensionAware {
internal var _isApplicationInitialized = false
private set
@Deprecated(
message = "Starting from 1.6.10, Compose for Web goes to Alpha. Experimental configuration is not needed anymore.",
)
val application: ExperimentalWebApplication by lazy {
_isApplicationInitialized = true
objectFactory.newInstance(ExperimentalWebApplication::class.java, "main")
}
@Deprecated(
message = "Starting from 1.6.10, Compose for Web goes to Alpha. Experimental configuration is not needed anymore.",
)
fun application(fn: Action<ExperimentalWebApplication>) {
fn.execute(application)
}
}

14
gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/experimental/web/tasks/ExperimentalUnpackSkikoWasmRuntimeTask.kt

@ -1,14 +0,0 @@ @@ -1,14 +0,0 @@
/*
* Copyright 2020-2022 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.
*/
package org.jetbrains.compose.experimental.web.tasks
import org.jetbrains.compose.web.tasks.UnpackSkikoWasmRuntimeTask
@Deprecated(
message = "Starting from 1.6.10 Compose for Web goes to Alpha",
replaceWith = ReplaceWith("UnpackSkikoWasmRuntimeTask")
)
abstract class ExperimentalUnpackSkikoWasmRuntimeTask : UnpackSkikoWasmRuntimeTask()
Loading…
Cancel
Save