[gradle][experimental] publish the per component pom into variant generated publications
This commit is contained in:
+3
@@ -1,8 +1,10 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.experimental
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.provider.SetProperty
|
||||
import org.gradle.api.publish.maven.MavenPom
|
||||
import org.gradle.language.BinaryCollection
|
||||
import org.gradle.language.ComponentWithBinaries
|
||||
import org.gradle.language.ComponentWithDependencies
|
||||
@@ -43,6 +45,7 @@ interface KotlinNativeComponent: ComponentWithBinaries, ComponentWithDependencie
|
||||
fun extraOpts(vararg values: Any)
|
||||
fun extraOpts(values: List<Any>)
|
||||
|
||||
fun pom(action: Action<MavenPom>)
|
||||
// endregion
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -1,10 +1,12 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.internal.file.FileOperations
|
||||
import org.gradle.api.internal.provider.LockableSetProperty
|
||||
import org.gradle.api.model.ObjectFactory
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.publish.maven.MavenPom
|
||||
import org.gradle.language.internal.DefaultBinaryCollection
|
||||
import org.gradle.language.internal.DefaultComponentDependencies
|
||||
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
||||
@@ -47,6 +49,7 @@ abstract class AbstractKotlinNativeComponent @Inject constructor(
|
||||
private val dependencies: DefaultComponentDependencies = objectFactory.newInstance(
|
||||
DefaultComponentDependencies::class.java,
|
||||
names.withSuffix("implementation"))
|
||||
internal val poms = mutableListOf<Action<MavenPom>>()
|
||||
|
||||
override fun getDependencies() = dependencies
|
||||
|
||||
@@ -66,5 +69,8 @@ abstract class AbstractKotlinNativeComponent @Inject constructor(
|
||||
extraOpts.addAll(values.map { it.toString() })
|
||||
}
|
||||
|
||||
override fun pom(action: Action<MavenPom>) {
|
||||
poms.add(action)
|
||||
}
|
||||
// endregion
|
||||
}
|
||||
+20
@@ -8,6 +8,8 @@ import org.gradle.api.internal.attributes.ImmutableAttributesFactory
|
||||
import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.api.model.ObjectFactory
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.publish.PublishingExtension
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.internal.reflect.Instantiator
|
||||
import org.gradle.language.cpp.CppBinary.DEBUGGABLE_ATTRIBUTE
|
||||
import org.gradle.language.cpp.CppBinary.OPTIMIZED_ATTRIBUTE
|
||||
@@ -209,6 +211,24 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
|
||||
|
||||
addBinariesForMainComponents(group, version)
|
||||
addBinariesForTestComponents(group, version)
|
||||
pluginManager.withPlugin("maven-publish") {
|
||||
val publishingExtension = project.extensions.getByType(PublishingExtension::class.java)
|
||||
val components = project.components.withType(KotlinNativeMainComponent::class.java)
|
||||
publishingExtension.publications.forEach { publication ->
|
||||
(publication as? MavenPublication)?.apply {
|
||||
val component = components.find {
|
||||
it.name == publication.name
|
||||
|| publication.name.startsWith("${it.name}Release")
|
||||
|| publication.name.startsWith("${it.name}Debug")
|
||||
}
|
||||
component?.let {
|
||||
it.poms.forEach {
|
||||
publication.pom(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user