[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
|
package org.jetbrains.kotlin.gradle.plugin.experimental
|
||||||
|
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.provider.SetProperty
|
import org.gradle.api.provider.SetProperty
|
||||||
|
import org.gradle.api.publish.maven.MavenPom
|
||||||
import org.gradle.language.BinaryCollection
|
import org.gradle.language.BinaryCollection
|
||||||
import org.gradle.language.ComponentWithBinaries
|
import org.gradle.language.ComponentWithBinaries
|
||||||
import org.gradle.language.ComponentWithDependencies
|
import org.gradle.language.ComponentWithDependencies
|
||||||
@@ -43,6 +45,7 @@ interface KotlinNativeComponent: ComponentWithBinaries, ComponentWithDependencie
|
|||||||
fun extraOpts(vararg values: Any)
|
fun extraOpts(vararg values: Any)
|
||||||
fun extraOpts(values: List<Any>)
|
fun extraOpts(values: List<Any>)
|
||||||
|
|
||||||
|
fun pom(action: Action<MavenPom>)
|
||||||
// endregion
|
// endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
@@ -1,10 +1,12 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
package org.jetbrains.kotlin.gradle.plugin.experimental.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.internal.file.FileOperations
|
import org.gradle.api.internal.file.FileOperations
|
||||||
import org.gradle.api.internal.provider.LockableSetProperty
|
import org.gradle.api.internal.provider.LockableSetProperty
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.publish.maven.MavenPom
|
||||||
import org.gradle.language.internal.DefaultBinaryCollection
|
import org.gradle.language.internal.DefaultBinaryCollection
|
||||||
import org.gradle.language.internal.DefaultComponentDependencies
|
import org.gradle.language.internal.DefaultComponentDependencies
|
||||||
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
import org.gradle.language.nativeplatform.internal.ComponentWithNames
|
||||||
@@ -47,6 +49,7 @@ abstract class AbstractKotlinNativeComponent @Inject constructor(
|
|||||||
private val dependencies: DefaultComponentDependencies = objectFactory.newInstance(
|
private val dependencies: DefaultComponentDependencies = objectFactory.newInstance(
|
||||||
DefaultComponentDependencies::class.java,
|
DefaultComponentDependencies::class.java,
|
||||||
names.withSuffix("implementation"))
|
names.withSuffix("implementation"))
|
||||||
|
internal val poms = mutableListOf<Action<MavenPom>>()
|
||||||
|
|
||||||
override fun getDependencies() = dependencies
|
override fun getDependencies() = dependencies
|
||||||
|
|
||||||
@@ -66,5 +69,8 @@ abstract class AbstractKotlinNativeComponent @Inject constructor(
|
|||||||
extraOpts.addAll(values.map { it.toString() })
|
extraOpts.addAll(values.map { it.toString() })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun pom(action: Action<MavenPom>) {
|
||||||
|
poms.add(action)
|
||||||
|
}
|
||||||
// endregion
|
// endregion
|
||||||
}
|
}
|
||||||
+20
@@ -8,6 +8,8 @@ import org.gradle.api.internal.attributes.ImmutableAttributesFactory
|
|||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
import org.gradle.api.provider.Provider
|
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.internal.reflect.Instantiator
|
||||||
import org.gradle.language.cpp.CppBinary.DEBUGGABLE_ATTRIBUTE
|
import org.gradle.language.cpp.CppBinary.DEBUGGABLE_ATTRIBUTE
|
||||||
import org.gradle.language.cpp.CppBinary.OPTIMIZED_ATTRIBUTE
|
import org.gradle.language.cpp.CppBinary.OPTIMIZED_ATTRIBUTE
|
||||||
@@ -209,6 +211,24 @@ class KotlinNativePlugin @Inject constructor(val attributesFactory: ImmutableAtt
|
|||||||
|
|
||||||
addBinariesForMainComponents(group, version)
|
addBinariesForMainComponents(group, version)
|
||||||
addBinariesForTestComponents(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