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