[gradle][plugin] this patch adds pom entry to konan building config to re-evaluate it on each native publications

This commit is contained in:
Vasily Levchenko
2018-06-13 17:54:24 +03:00
parent 5a4718b3a3
commit f84e272b0e
2 changed files with 17 additions and 9 deletions
@@ -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<T: KonanBuildingTask>(private val name_: Stri
internal val aggregateBuildTask: Task
internal var pomActions = mutableListOf<Action<MavenPom>>()
private val konanTargets: Iterable<KonanTarget>
get() = project.hostManager.toKonanTargets(targets).distinct()
@@ -187,4 +190,6 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
target(targetString) { configureAction.execute(this) }
fun target(targetString: String, configureAction: Closure<Unit>) =
target(targetString, ConfigureUtil.configureUsing(configureAction))
fun pom(action: Action<MavenPom>) = pomActions + action
}
@@ -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)
}
}
}
}