diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt index 07c70102cc7..cf3b03b5340 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanBuildingConfig.kt @@ -24,6 +24,7 @@ import org.gradle.api.Task import org.gradle.api.internal.DefaultNamedDomainObjectSet import org.gradle.api.internal.project.ProjectInternal import org.gradle.api.plugins.BasePlugin +import org.gradle.api.publish.maven.MavenPom import org.gradle.internal.reflect.Instantiator import org.gradle.util.ConfigureUtil import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask @@ -46,6 +47,8 @@ abstract class KonanBuildingConfig(private val name_: Stri internal val aggregateBuildTask: Task + internal var pomActions = mutableListOf>() + private val konanTargets: Iterable get() = project.hostManager.toKonanTargets(targets).distinct() @@ -187,4 +190,6 @@ abstract class KonanBuildingConfig(private val name_: Stri target(targetString) { configureAction.execute(this) } fun target(targetString: String, configureAction: Closure) = target(targetString, ConfigureUtil.configureUsing(configureAction)) + + fun pom(action: Action) = pomActions + action } diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt index 07021ee3cc9..ea71960953c 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt @@ -27,9 +27,7 @@ import org.gradle.api.internal.project.ProjectInternal import org.gradle.api.plugins.BasePlugin import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication -import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal import org.gradle.language.cpp.internal.NativeVariantIdentity -import org.gradle.tooling.UnsupportedVersionException import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK_NAME @@ -358,8 +356,7 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR if (!isPublicationEnabled) return@afterEvaluate project.pluginManager.withPlugin("maven-publish") { - container.all { - val buildingConfig = it + container.all { buildingConfig -> val konanSoftwareComponent = buildingConfig.mainVariant project.extensions.configure(PublishingExtension::class.java) { val builtArtifact = buildingConfig.name @@ -369,18 +366,24 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR groupId = project.group.toString() from(konanSoftwareComponent) } + buildingConfig.pomActions.forEach { + mavenPublication.pom(it) + } } project.extensions.configure(PublishingExtension::class.java) { val publishing = it for (v in konanSoftwareComponent.variants) { - publishing.publications.create(v.name, MavenPublication::class.java) { + publishing.publications.create(v.name, MavenPublication::class.java) { mavenPublication -> val coordinates = (v as NativeVariantIdentity).coordinates project.logger.info("variant with coordinates($coordinates) and module: ${coordinates.module}") - it.artifactId = coordinates.module.name - it.groupId = coordinates.group - it.version = coordinates.version - it.from(v) + mavenPublication.artifactId = coordinates.module.name + mavenPublication.groupId = coordinates.group + mavenPublication.version = coordinates.version + mavenPublication.from(v) + buildingConfig.pomActions.forEach { + mavenPublication.pom(it) + } } } }