mirror of
https://github.com/jlengrand/compose-multiplatform.git
synced 2026-03-10 08:11:20 +00:00
Fix build helpers publishing (#1416)
* Fix compatibility with Intellij 2021.3 Resolves #1373 * Use Java reflection * Set Java source & target compatibility for build helpers Otherwise, Gradle might set Gradle metadata attributes in such way, that transitive dependencies of published modules are not resolved * Configure shadow jar manually Applying plugin configures additional publication, so that both .jar and -shadow.jar are published, and additional configurations are added to Gradle metadata. To avoid unexpected metadata resolution results, ShadowJar task is now configured manually * Fix closeStagingRepo JSON request * Update publishing build-helpers in compose
This commit is contained in:
@@ -3,8 +3,8 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile
|
||||
plugins {
|
||||
id("java")
|
||||
id("org.jetbrains.kotlin.jvm") version "1.5.10"
|
||||
id("org.jetbrains.intellij") version "1.1.2"
|
||||
id("org.jetbrains.changelog") version "1.1.2"
|
||||
id("org.jetbrains.intellij") version "1.3.0"
|
||||
id("org.jetbrains.changelog") version "1.3.1"
|
||||
}
|
||||
|
||||
val projectProperties = ProjectProperties(project)
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Opt-out flag for bundling Kotlin standard library.
|
||||
# See https://kotlinlang.org/docs/reference/using-gradle.html#dependency-on-the-standard-library for details.
|
||||
kotlin.stdlib.default.dependency = false
|
||||
kotlin.stdlib.default.dependency=false
|
||||
|
||||
deploy.version=0.1-SNAPSHOT
|
||||
|
||||
plugin.channels=snapshots
|
||||
plugin.since.build=203
|
||||
plugin.until.build=212.*
|
||||
plugin.until.build=213.*
|
||||
## See https://jb.gg/intellij-platform-builds-list for available build versions.
|
||||
plugin.verifier.ide.versions=2020.3.2, 2021.1
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.util.concurrency.annotations.RequiresReadLock
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinTargetData
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
|
||||
@@ -30,7 +29,7 @@ internal class ConfigurePreviewTaskNameProviderImpl : ConfigurePreviewTaskNamePr
|
||||
val modulePath = ExternalSystemApiUtil.getExternalProjectPath(module) ?: return null
|
||||
val moduleNode = moduleDataNodeOrNull(module.project, modulePath)
|
||||
if (moduleNode != null) {
|
||||
val target = ExternalSystemApiUtil.getChildren(moduleNode, KotlinTargetData.KEY).singleOrNull()
|
||||
val target = ExternalSystemApiUtil.getChildren(moduleNode, kotlinTargetDataKey).singleOrNull()
|
||||
if (target != null) {
|
||||
return previewTaskName(target.data.externalName)
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ package org.jetbrains.compose.desktop.ide.preview
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.util.concurrency.annotations.RequiresReadLock
|
||||
import org.jetbrains.kotlin.idea.debugger.getService
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
|
||||
data class PreviewLocation(val fqName: String, val modulePath: String, val taskName: String)
|
||||
@@ -21,7 +20,7 @@ internal fun KtNamedFunction.asPreviewFunctionOrNull(): PreviewLocation? {
|
||||
val module = ProjectFileIndex.getInstance(project).getModuleForFile(containingFile.virtualFile)
|
||||
if (module == null || module.isDisposed) return null
|
||||
|
||||
val service = project.getService<PreviewStateService>()
|
||||
val service = project.getService(PreviewStateService::class.java)
|
||||
val previewTaskName = service.configurePreviewTaskNameOrNull(module) ?: DEFAULT_CONFIGURE_PREVIEW_TASK_NAME
|
||||
val modulePath = ExternalSystemApiUtil.getExternalProjectPath(module) ?: return null
|
||||
return PreviewLocation(fqName = fqName, modulePath = modulePath, taskName = previewTaskName)
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.ui.components.JBLoadingPanel
|
||||
import com.intellij.util.concurrency.annotations.RequiresReadLock
|
||||
import org.jetbrains.compose.desktop.ui.tooling.preview.rpc.*
|
||||
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.event.AncestorEvent
|
||||
import javax.swing.event.AncestorListener
|
||||
@@ -140,7 +140,7 @@ private class ConfigurePreviewTaskNameCacheInvalidator(
|
||||
) : ExternalSystemTaskNotificationListenerAdapter(null) {
|
||||
override fun onStart(id: ExternalSystemTaskId, workingDir: String?) {
|
||||
if (
|
||||
id.projectSystemId == GRADLE_SYSTEM_ID &&
|
||||
id.projectSystemId == GradleConstants.SYSTEM_ID &&
|
||||
id.type == ExternalSystemTaskType.RESOLVE_PROJECT
|
||||
) {
|
||||
configurePreviewTaskNameCache.invalidate()
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* 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.desktop.ide.preview
|
||||
|
||||
import com.intellij.openapi.externalSystem.model.Key
|
||||
import com.intellij.openapi.externalSystem.model.project.AbstractNamedData
|
||||
import java.lang.reflect.Modifier
|
||||
|
||||
internal val kotlinTargetDataKey: Key<out AbstractNamedData> = run {
|
||||
val kotlinTargetDataClass = try {
|
||||
Class.forName("org.jetbrains.kotlin.idea.gradle.configuration.KotlinTargetData")
|
||||
} catch (e: ClassNotFoundException) {
|
||||
try {
|
||||
Class.forName("org.jetbrains.kotlin.idea.configuration.KotlinTargetData")
|
||||
} catch (e: ClassNotFoundException) {
|
||||
error("Could not find 'KotlinTargetData' class")
|
||||
}
|
||||
}
|
||||
val companionField = kotlinTargetDataClass.fields.firstOrNull { Modifier.isStatic(it.modifiers) && it.name == "Companion" }
|
||||
?: error("'${kotlinTargetDataClass.canonicalName}.Companion")
|
||||
val companionInstance = companionField.get(kotlinTargetDataClass)
|
||||
val companionClass = companionInstance.javaClass
|
||||
val getKeyMethod = companionClass.methods.firstOrNull { it.name == "getKEY" }
|
||||
?: error("Cannot find '${kotlinTargetDataClass.canonicalName}.Companion.getKEY'")
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
getKeyMethod.invoke(companionInstance) as Key<out AbstractNamedData>
|
||||
}
|
||||
Reference in New Issue
Block a user