mirror of
https://github.com/jlengrand/compose-multiplatform.git
synced 2026-03-10 08:11:20 +00:00
Split Maven artifact configuration and Gradle plugin configuration
This is needed to introduce non-Gradle plugin modules under gradle-plugins build for Compose preview runtime.
This commit is contained in:
committed by
Alexey Tsvetkov
parent
a3a17813e5
commit
6dbe467abf
@@ -48,20 +48,28 @@ subprojects {
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
gradlePluginConfig?.let { configureGradlePlugin(it) }
|
||||
mavenPublicationConfig?.let { mavenPublicationConfig ->
|
||||
configurePublication(mavenPublicationConfig)
|
||||
|
||||
gradlePluginConfig?.let { gradlePluginConfig ->
|
||||
configureGradlePlugin(mavenPublicationConfig, gradlePluginConfig)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Project.configureGradlePlugin(config: GradlePluginConfigExtension) {
|
||||
fun Project.configurePublication(
|
||||
publicationConfig: MavenPublicationConfigExtension
|
||||
) {
|
||||
// maven publication for plugin
|
||||
configureIfExists<PublishingExtension> {
|
||||
// pluginMaven is a default publication created by java-gradle-plugin
|
||||
// https://github.com/gradle/gradle/issues/10384
|
||||
publications.create<MavenPublication>("pluginMaven") {
|
||||
artifactId = config.artifactId
|
||||
artifactId = publicationConfig.artifactId
|
||||
pom {
|
||||
name.set(config.displayName)
|
||||
description.set(config.description)
|
||||
name.set(publicationConfig.displayName)
|
||||
description.set(publicationConfig.description)
|
||||
url.set(BuildProperties.website)
|
||||
licenses {
|
||||
license {
|
||||
@@ -72,22 +80,27 @@ fun Project.configureGradlePlugin(config: GradlePluginConfigExtension) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Project.configureGradlePlugin(
|
||||
publicationConfig: MavenPublicationConfigExtension,
|
||||
gradlePluginConfig: GradlePluginConfigExtension
|
||||
) {
|
||||
// metadata for gradle plugin portal (relates to pluginBundle extension block from com.gradle.plugin-publish)
|
||||
configureIfExists<PluginBundleExtension> {
|
||||
vcsUrl = BuildProperties.vcs
|
||||
website = BuildProperties.website
|
||||
description = config.description
|
||||
description = publicationConfig.description
|
||||
}
|
||||
|
||||
// gradle plugin definition (relates to gradlePlugin extension block from java-gradle-plugin)
|
||||
configureIfExists<GradlePluginDevelopmentExtension> {
|
||||
plugins {
|
||||
create("gradlePlugin") {
|
||||
id = config.pluginId
|
||||
displayName = config.displayName
|
||||
description = config.description
|
||||
implementationClass = config.implementationClass
|
||||
id = gradlePluginConfig.pluginId
|
||||
displayName = publicationConfig.displayName
|
||||
description = publicationConfig.description
|
||||
implementationClass = gradlePluginConfig.implementationClass
|
||||
version = project.version
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,7 @@ import org.gradle.api.Project
|
||||
// Plugin-specific properties (also see gradle-plugins/build.gradle.kts)
|
||||
open class GradlePluginConfigExtension {
|
||||
lateinit var pluginId: String
|
||||
lateinit var artifactId: String
|
||||
lateinit var implementationClass: String
|
||||
lateinit var displayName: String
|
||||
lateinit var description: String
|
||||
}
|
||||
|
||||
val Project.gradlePluginConfig: GradlePluginConfigExtension?
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import org.gradle.api.Project
|
||||
|
||||
open class MavenPublicationConfigExtension {
|
||||
lateinit var artifactId: String
|
||||
lateinit var displayName: String
|
||||
lateinit var description: String
|
||||
}
|
||||
|
||||
val Project.mavenPublicationConfig: MavenPublicationConfigExtension?
|
||||
get() = extensions.findByType(MavenPublicationConfigExtension::class.java)
|
||||
|
||||
fun Project.mavenPublicationConfig(fn: MavenPublicationConfigExtension.() -> Unit) {
|
||||
extensions.create("mavenPublicationConfig", MavenPublicationConfigExtension::class.java).apply(fn)
|
||||
}
|
||||
@@ -12,12 +12,15 @@ plugins {
|
||||
|
||||
gradlePluginConfig {
|
||||
pluginId = "org.jetbrains.compose"
|
||||
artifactId = "compose-gradle-plugin"
|
||||
displayName = "JetBrains Compose Plugin"
|
||||
description = "JetBrains Compose Gradle plugin for easy configuration"
|
||||
implementationClass = "org.jetbrains.compose.ComposePlugin"
|
||||
}
|
||||
|
||||
mavenPublicationConfig {
|
||||
displayName = "JetBrains Compose Gradle Plugin"
|
||||
description = "JetBrains Compose Gradle plugin for easy configuration"
|
||||
artifactId = "compose-gradle-plugin"
|
||||
}
|
||||
|
||||
buildConfig {
|
||||
packageName = "org.jetbrains.compose"
|
||||
clsName = "ComposeBuildConfig"
|
||||
|
||||
Reference in New Issue
Block a user