[gradle][plugin] this patch adds pom entry to konan building config to re-evaluate it on each native publications
This commit is contained in:
+5
@@ -24,6 +24,7 @@ import org.gradle.api.Task
|
|||||||
import org.gradle.api.internal.DefaultNamedDomainObjectSet
|
import org.gradle.api.internal.DefaultNamedDomainObjectSet
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.api.plugins.BasePlugin
|
import org.gradle.api.plugins.BasePlugin
|
||||||
|
import org.gradle.api.publish.maven.MavenPom
|
||||||
import org.gradle.internal.reflect.Instantiator
|
import org.gradle.internal.reflect.Instantiator
|
||||||
import org.gradle.util.ConfigureUtil
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanBuildingTask
|
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 val aggregateBuildTask: Task
|
||||||
|
|
||||||
|
internal var pomActions = mutableListOf<Action<MavenPom>>()
|
||||||
|
|
||||||
private val konanTargets: Iterable<KonanTarget>
|
private val konanTargets: Iterable<KonanTarget>
|
||||||
get() = project.hostManager.toKonanTargets(targets).distinct()
|
get() = project.hostManager.toKonanTargets(targets).distinct()
|
||||||
|
|
||||||
@@ -187,4 +190,6 @@ abstract class KonanBuildingConfig<T: KonanBuildingTask>(private val name_: Stri
|
|||||||
target(targetString) { configureAction.execute(this) }
|
target(targetString) { configureAction.execute(this) }
|
||||||
fun target(targetString: String, configureAction: Closure<Unit>) =
|
fun target(targetString: String, configureAction: Closure<Unit>) =
|
||||||
target(targetString, ConfigureUtil.configureUsing(configureAction))
|
target(targetString, ConfigureUtil.configureUsing(configureAction))
|
||||||
|
|
||||||
|
fun pom(action: Action<MavenPom>) = pomActions + action
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-9
@@ -27,9 +27,7 @@ import org.gradle.api.internal.project.ProjectInternal
|
|||||||
import org.gradle.api.plugins.BasePlugin
|
import org.gradle.api.plugins.BasePlugin
|
||||||
import org.gradle.api.publish.PublishingExtension
|
import org.gradle.api.publish.PublishingExtension
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
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.language.cpp.internal.NativeVariantIdentity
|
||||||
import org.gradle.tooling.UnsupportedVersionException
|
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.gradle.util.GradleVersion
|
import org.gradle.util.GradleVersion
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK_NAME
|
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)
|
if (!isPublicationEnabled)
|
||||||
return@afterEvaluate
|
return@afterEvaluate
|
||||||
project.pluginManager.withPlugin("maven-publish") {
|
project.pluginManager.withPlugin("maven-publish") {
|
||||||
container.all {
|
container.all { buildingConfig ->
|
||||||
val buildingConfig = it
|
|
||||||
val konanSoftwareComponent = buildingConfig.mainVariant
|
val konanSoftwareComponent = buildingConfig.mainVariant
|
||||||
project.extensions.configure(PublishingExtension::class.java) {
|
project.extensions.configure(PublishingExtension::class.java) {
|
||||||
val builtArtifact = buildingConfig.name
|
val builtArtifact = buildingConfig.name
|
||||||
@@ -369,18 +366,24 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
|||||||
groupId = project.group.toString()
|
groupId = project.group.toString()
|
||||||
from(konanSoftwareComponent)
|
from(konanSoftwareComponent)
|
||||||
}
|
}
|
||||||
|
buildingConfig.pomActions.forEach {
|
||||||
|
mavenPublication.pom(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
project.extensions.configure(PublishingExtension::class.java) {
|
project.extensions.configure(PublishingExtension::class.java) {
|
||||||
val publishing = it
|
val publishing = it
|
||||||
for (v in konanSoftwareComponent.variants) {
|
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
|
val coordinates = (v as NativeVariantIdentity).coordinates
|
||||||
project.logger.info("variant with coordinates($coordinates) and module: ${coordinates.module}")
|
project.logger.info("variant with coordinates($coordinates) and module: ${coordinates.module}")
|
||||||
it.artifactId = coordinates.module.name
|
mavenPublication.artifactId = coordinates.module.name
|
||||||
it.groupId = coordinates.group
|
mavenPublication.groupId = coordinates.group
|
||||||
it.version = coordinates.version
|
mavenPublication.version = coordinates.version
|
||||||
it.from(v)
|
mavenPublication.from(v)
|
||||||
|
buildingConfig.pomActions.forEach {
|
||||||
|
mavenPublication.pom(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user