Browse Source
Since 1.6.10 Compose for Web goes to Alpha and experimental
configuration is not needed anymore. We'll configure the web targets by
default when they're added to projects.
## Testing
- I built the plugin to mavenLocal. And used it in a couple of our
samples.
- After gradle sync completes, I observe the Deprecation warning in
build.gradle.kts on `compose.experimental.web` usages (see a screenshot
below)
<img width="1022" alt="Screenshot 2024-05-10 at 15 41 14"
src="https://github.com/JetBrains/compose-multiplatform/assets/7372778/e8ede073-8d34-4dd7-ae74-c83ca0ff5c96">
Then I remove deprecated API usages and test that the project works
without it:
- run `./gradlew clean` just in case
- run the app: `./gradlew wasmJsBrowserRun` and `./gradlew jsBrowserRun`
- both run fine
- build the production distribution: `./gradlew
wasmJsBrowserDistribution`
- `cd ..../build/dist/wasmJs/productionExecutable` and run `python -m
http.server`, open a browser at `http://localhost:8000` - the app should
work the same way it works with gradle tasks above
<!-- Optional -->
This should be tested by QA
## Release Notes
### Highlights - Web
- Compose for Web goes to Alpha!
Some experimental Compose Multiplatform Gradle plugin APIs for web app
configuration were deprecated. Their usage is not required anymore.
(cherry picked from commit 885ea3da2a
)
release/1.6.10
v1.6.10-rc02
Oleksandr Karpovich
7 months ago
committed by
Oleksandr.Karpovich
10 changed files with 104 additions and 75 deletions
@ -1,24 +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.internal |
|
||||||
|
|
||||||
import org.gradle.api.Project |
|
||||||
import org.jetbrains.compose.ComposeExtension |
|
||||||
import org.jetbrains.compose.experimental.dsl.ExperimentalExtension |
|
||||||
import org.jetbrains.compose.experimental.web.internal.configureExperimentalWebApplication |
|
||||||
import org.jetbrains.compose.web.WebExtension |
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension |
|
||||||
|
|
||||||
internal fun Project.configureExperimental( |
|
||||||
composeExt: ComposeExtension, |
|
||||||
experimentalExt: ExperimentalExtension |
|
||||||
) { |
|
||||||
if (experimentalExt.web._isApplicationInitialized) { |
|
||||||
val webExt = composeExt.extensions.getByType(WebExtension::class.java) |
|
||||||
webExt.targetsToConfigure(project) |
|
||||||
.configureExperimentalWebApplication(project, experimentalExt.web.application) |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,10 @@ |
|||||||
|
package org.jetbrains.compose.web.dsl |
||||||
|
|
||||||
|
import javax.inject.Inject |
||||||
|
|
||||||
|
abstract class WebApplication @Inject constructor( |
||||||
|
@Suppress("unused") |
||||||
|
val name: String, |
||||||
|
) { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
* 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.web.tasks |
||||||
|
|
||||||
|
import org.gradle.api.DefaultTask |
||||||
|
import org.gradle.api.file.ArchiveOperations |
||||||
|
import org.gradle.api.file.DirectoryProperty |
||||||
|
import org.gradle.api.file.FileCollection |
||||||
|
import org.gradle.api.file.FileSystemOperations |
||||||
|
import org.gradle.api.tasks.InputFiles |
||||||
|
import org.gradle.api.tasks.OutputDirectory |
||||||
|
import org.gradle.api.tasks.TaskAction |
||||||
|
import org.jetbrains.compose.internal.utils.clearDirs |
||||||
|
import java.io.File |
||||||
|
import javax.inject.Inject |
||||||
|
|
||||||
|
abstract class UnpackSkikoWasmRuntimeTask : DefaultTask() { |
||||||
|
@get:InputFiles |
||||||
|
lateinit var skikoRuntimeFiles: FileCollection |
||||||
|
|
||||||
|
@get:OutputDirectory |
||||||
|
abstract val outputDir: DirectoryProperty |
||||||
|
|
||||||
|
@get:Inject |
||||||
|
internal abstract val archiveOperations: ArchiveOperations |
||||||
|
|
||||||
|
@get:Inject |
||||||
|
internal abstract val fileOperations: FileSystemOperations |
||||||
|
|
||||||
|
@TaskAction |
||||||
|
fun run() { |
||||||
|
fileOperations.clearDirs(outputDir) |
||||||
|
|
||||||
|
for (file in skikoRuntimeFiles.files) { |
||||||
|
if (file.name.endsWith(".jar", ignoreCase = true)) { |
||||||
|
unpackJar(file) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private fun unpackJar(file: File) { |
||||||
|
fileOperations.copy { copySpec -> |
||||||
|
copySpec.from(archiveOperations.zipTree(file)) |
||||||
|
copySpec.into(outputDir) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue