Skip to content

Commit f5c85b7

Browse files
authored
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.
1 parent f7cd9ea commit f5c85b7

File tree

6 files changed

+41
-105
lines changed

6 files changed

+41
-105
lines changed

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

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@ import org.gradle.api.artifacts.dsl.DependencyHandler
1414
import org.gradle.api.artifacts.dsl.RepositoryHandler
1515
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
1616
import org.gradle.api.plugins.ExtensionAware
17-
import org.jetbrains.compose.android.AndroidExtension
1817
import org.jetbrains.compose.desktop.DesktopExtension
1918
import org.jetbrains.compose.desktop.application.internal.configureDesktop
2019
import org.jetbrains.compose.desktop.preview.internal.initializePreview
21-
import org.jetbrains.compose.experimental.dsl.ExperimentalExtension
2220
import org.jetbrains.compose.experimental.internal.configureExperimentalTargetsFlagsCheck
2321
import org.jetbrains.compose.internal.KOTLIN_MPP_PLUGIN_ID
2422
import org.jetbrains.compose.internal.mppExt
@@ -37,8 +35,6 @@ abstract class ComposePlugin : Plugin<Project> {
3735
override fun apply(project: Project) {
3836
val composeExtension = project.extensions.create("compose", ComposeExtension::class.java, project)
3937
val desktopExtension = composeExtension.extensions.create("desktop", DesktopExtension::class.java)
40-
val androidExtension = composeExtension.extensions.create("android", AndroidExtension::class.java)
41-
val experimentalExtension = composeExtension.extensions.create("experimental", ExperimentalExtension::class.java)
4238
val resourcesExtension = composeExtension.extensions.create("resources", ResourcesExtension::class.java)
4339

4440
project.dependencies.extensions.add("compose", Dependencies(project))
@@ -69,89 +65,121 @@ abstract class ComposePlugin : Plugin<Project> {
6965
@Suppress("DEPRECATION")
7066
class Dependencies(project: Project) {
7167
val desktop = DesktopDependencies
68+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.animation:animation:${ComposeBuildConfig.composeVersion}\""))
7269
val animation get() = composeDependency("org.jetbrains.compose.animation:animation")
70+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.animation:animation-graphics:${ComposeBuildConfig.composeVersion}\""))
7371
val animationGraphics get() = composeDependency("org.jetbrains.compose.animation:animation-graphics")
72+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.foundation:foundation:${ComposeBuildConfig.composeVersion}\""))
7473
val foundation get() = composeDependency("org.jetbrains.compose.foundation:foundation")
74+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material:material:${ComposeBuildConfig.composeVersion}\""))
7575
val material get() = composeDependency("org.jetbrains.compose.material:material")
76+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material3:material3:${ComposeBuildConfig.composeMaterial3Version}\""))
7677
val material3 get() = composeMaterial3Dependency("org.jetbrains.compose.material3:material3")
78+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material3:material3-adaptive-navigation-suite:${ComposeBuildConfig.composeMaterial3Version}\""))
7779
val material3AdaptiveNavigationSuite get() = composeMaterial3Dependency("org.jetbrains.compose.material3:material3-adaptive-navigation-suite")
80+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.runtime:runtime:${ComposeBuildConfig.composeVersion}\""))
7881
val runtime get() = composeDependency("org.jetbrains.compose.runtime:runtime")
82+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.runtime:runtime-saveable:${ComposeBuildConfig.composeVersion}\""))
7983
val runtimeSaveable get() = composeDependency("org.jetbrains.compose.runtime:runtime-saveable")
84+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui:${ComposeBuildConfig.composeVersion}\""))
8085
val ui get() = composeDependency("org.jetbrains.compose.ui:ui")
81-
@Deprecated("Use desktop.uiTestJUnit4", replaceWith = ReplaceWith("desktop.uiTestJUnit4"))
82-
@ExperimentalComposeLibrary
83-
val uiTestJUnit4 get() = composeDependency("org.jetbrains.compose.ui:ui-test-junit4")
86+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-test:${ComposeBuildConfig.composeVersion}\""))
8487
@ExperimentalComposeLibrary
8588
val uiTest get() = composeDependency("org.jetbrains.compose.ui:ui-test")
89+
@Deprecated("Use org.jetbrains.compose.ui:ui-tooling-preview module instead", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-tooling:${ComposeBuildConfig.composeVersion}\""))
8690
val uiTooling get() = composeDependency("org.jetbrains.compose.ui:ui-tooling")
91+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-util:${ComposeBuildConfig.composeVersion}\""))
8792
val uiUtil get() = composeDependency("org.jetbrains.compose.ui:ui-util")
93+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-tooling-preview:${ComposeBuildConfig.composeVersion}\""))
8894
val preview get() = composeDependency("org.jetbrains.compose.ui:ui-tooling-preview")
95+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.material:material-icons-extended:1.7.3\""))
8996
val materialIconsExtended get() = "org.jetbrains.compose.material:material-icons-extended:1.7.3"
97+
@Deprecated("Specify dependency via version catalog")
9098
val components get() = CommonComponentsDependencies
91-
@Deprecated("Use compose.html", replaceWith = ReplaceWith("html"))
99+
@Deprecated("Use compose.html", replaceWith = ReplaceWith("html"), level = DeprecationLevel.ERROR)
92100
val web: WebDependencies get() = WebDependencies
101+
@Deprecated("Specify dependency via version catalog")
93102
val html: HtmlDependencies get() = HtmlDependencies
94103
}
95104

105+
@Deprecated("Specify dependency via version catalog")
96106
object DesktopDependencies {
107+
@Deprecated("Specify dependency via version catalog")
97108
val components = DesktopComponentsDependencies
98109

110+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop:${ComposeBuildConfig.composeVersion}\""))
99111
val common = composeDependency("org.jetbrains.compose.desktop:desktop")
112+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-linux-x64:${ComposeBuildConfig.composeVersion}\""))
100113
val linux_x64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-linux-x64")
114+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-linux-arm64:${ComposeBuildConfig.composeVersion}\""))
101115
val linux_arm64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-linux-arm64")
116+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-windows-x64:${ComposeBuildConfig.composeVersion}\""))
102117
val windows_x64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-windows-x64")
118+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-windows-arm64:${ComposeBuildConfig.composeVersion}\""))
103119
val windows_arm64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-windows-arm64")
120+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-macos-x64:${ComposeBuildConfig.composeVersion}\""))
104121
val macos_x64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-macos-x64")
122+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.desktop:desktop-jvm-macos-arm64:${ComposeBuildConfig.composeVersion}\""))
105123
val macos_arm64 = composeDependency("org.jetbrains.compose.desktop:desktop-jvm-macos-arm64")
106124

125+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-test-junit4:${ComposeBuildConfig.composeVersion}\""))
107126
val uiTestJUnit4 get() = composeDependency("org.jetbrains.compose.ui:ui-test-junit4")
108127

109128
val currentOs by lazy {
110129
composeDependency("org.jetbrains.compose.desktop:desktop-jvm-${currentTarget.id}")
111130
}
112131
}
113132

133+
@Deprecated("Specify dependency via version catalog")
114134
object CommonComponentsDependencies {
135+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.components:components-resources:${ComposeBuildConfig.composeVersion}\""))
115136
val resources = composeDependency("org.jetbrains.compose.components:components-resources")
116-
@Deprecated(
117-
"Use org.jetbrains.compose.ui:ui-tooling-preview module instead",
118-
ReplaceWith("compose.preview")
119-
)
137+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.ui:ui-tooling-preview:${ComposeBuildConfig.composeVersion}\""))
120138
val uiToolingPreview = composeDependency("org.jetbrains.compose.components:components-ui-tooling-preview")
121139
}
122140

141+
@Deprecated("Specify dependency via version catalog")
123142
object DesktopComponentsDependencies {
143+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.components:components-splitpane:${ComposeBuildConfig.composeVersion}\""))
124144
@ExperimentalComposeLibrary
125145
val splitPane = composeDependency("org.jetbrains.compose.components:components-splitpane")
126146

147+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.components:components-animatedimage:${ComposeBuildConfig.composeVersion}\""))
127148
@ExperimentalComposeLibrary
128149
val animatedImage = composeDependency("org.jetbrains.compose.components:components-animatedimage")
129150
}
130151

131152
@Deprecated("Use compose.html")
132153
object WebDependencies {
154+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-core:${ComposeBuildConfig.composeVersion}\""))
133155
val core by lazy {
134156
composeDependency("org.jetbrains.compose.html:html-core")
135157
}
136158

159+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-svg:${ComposeBuildConfig.composeVersion}\""))
137160
val svg by lazy {
138161
composeDependency("org.jetbrains.compose.html:html-svg")
139162
}
140163

164+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-test-utils:${ComposeBuildConfig.composeVersion}\""))
141165
val testUtils by lazy {
142166
composeDependency("org.jetbrains.compose.html:html-test-utils")
143167
}
144168
}
145169

170+
@Deprecated("Specify dependency via version catalog")
146171
object HtmlDependencies {
172+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-core:${ComposeBuildConfig.composeVersion}\""))
147173
val core by lazy {
148174
composeDependency("org.jetbrains.compose.html:html-core")
149175
}
150176

177+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-svg:${ComposeBuildConfig.composeVersion}\""))
151178
val svg by lazy {
152179
composeDependency("org.jetbrains.compose.html:html-svg")
153180
}
154181

182+
@Deprecated("Specify dependency via version catalog", replaceWith = ReplaceWith("\"org.jetbrains.compose.html:html-test-utils:${ComposeBuildConfig.composeVersion}\""))
155183
val testUtils by lazy {
156184
composeDependency("org.jetbrains.compose.html:html-test-utils")
157185
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ package org.jetbrains.compose
22

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

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

Lines changed: 0 additions & 27 deletions
This file was deleted.

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

Lines changed: 0 additions & 18 deletions
This file was deleted.

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

Lines changed: 0 additions & 34 deletions
This file was deleted.

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

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)