Provide a DSL for publication settings (#1869)
* Provide a DSL for publication settings * Rename DSL method publication -> mavenPublication * Fix gradle task input/output validation #KT-26771 fixed.
This commit is contained in:
+6
@@ -5,12 +5,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Named
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.attributes.HasAttributes
|
||||
import org.gradle.api.component.SoftwareComponent
|
||||
import org.gradle.api.internal.component.UsageContext
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
|
||||
interface KotlinTargetComponent : SoftwareComponent {
|
||||
val target: KotlinTarget
|
||||
@@ -39,5 +42,8 @@ interface KotlinTarget: Named, HasAttributes {
|
||||
|
||||
fun createUsageContexts(): Set<UsageContext>
|
||||
|
||||
fun mavenPublication(action: Closure<Unit>)
|
||||
fun mavenPublication(action: Action<MavenPublication>)
|
||||
|
||||
override fun getName(): String = targetName
|
||||
}
|
||||
+8
@@ -58,6 +58,14 @@ class NewMultiplatformIT : BaseGradleIT() {
|
||||
Assert.assertTrue("$it should exist", groupDir.resolve(it).exists())
|
||||
}
|
||||
|
||||
listOf(jvmJarName, jsJarName, metadataJarName, wasmKlibName, nativeKlibName).forEach {
|
||||
val pom = groupDir.resolve(it.replaceAfterLast('.', "pom"))
|
||||
Assert.assertTrue(
|
||||
"$pom should contain a name section.",
|
||||
pom.readText().contains("<name>Sample MPP library</name>")
|
||||
)
|
||||
}
|
||||
|
||||
val jvmJarEntries = ZipFile(groupDir.resolve(jvmJarName)).entries().asSequence().map { it.name }.toSet()
|
||||
Assert.assertTrue("com/example/lib/CommonKt.class" in jvmJarEntries)
|
||||
Assert.assertTrue("com/example/lib/MainKt.class" in jvmJarEntries)
|
||||
|
||||
+9
@@ -27,7 +27,16 @@ kotlin {
|
||||
fromPreset(presets.linuxX64, 'linux64')
|
||||
fromPreset(presets.mingwX64, 'mingw64')
|
||||
fromPreset(presets.macosX64, 'macos64')
|
||||
|
||||
all {
|
||||
mavenPublication {
|
||||
pom.withXml {
|
||||
asNode().appendNode('name', 'Sample MPP library')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
jvm6Main {
|
||||
dependencies {
|
||||
|
||||
+3
@@ -126,6 +126,9 @@ class KotlinMultiplatformPlugin(
|
||||
}
|
||||
|
||||
variant.publicationDelegate = variantPublication
|
||||
(target as AbstractKotlinTarget).publicationConfigureActions.all {
|
||||
it.execute(variantPublication)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+17
@@ -4,6 +4,9 @@
|
||||
*/
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.DomainObjectSet
|
||||
import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Dependency
|
||||
@@ -11,6 +14,9 @@ import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.internal.component.UsageContext
|
||||
import org.gradle.api.plugins.JavaPlugin
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.gradle.util.WrapUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
@@ -61,6 +67,17 @@ abstract class AbstractKotlinTarget (
|
||||
runtimeElementsConfigurationName
|
||||
)
|
||||
) else emptyList()
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
internal val publicationConfigureActions =
|
||||
WrapUtil.toDomainObjectSet(Action::class.java) as DomainObjectSet<Action<MavenPublication>>
|
||||
|
||||
override fun mavenPublication(action: Action<MavenPublication>) {
|
||||
publicationConfigureActions.add(action)
|
||||
}
|
||||
|
||||
override fun mavenPublication(action: Closure<Unit>) =
|
||||
mavenPublication(ConfigureUtil.configureUsing(action))
|
||||
}
|
||||
|
||||
internal fun KotlinTarget.disambiguateName(simpleName: String) =
|
||||
|
||||
+1
-2
@@ -108,8 +108,7 @@ open class KotlinNativeCompile : AbstractCompile() {
|
||||
@InputFiles get() = compilation.compileDependencyFiles
|
||||
|
||||
private val friendModule: FileCollection?
|
||||
// It's already taken into account in libraries
|
||||
@Internal get() = compilation.friendCompilation?.output
|
||||
get() = compilation.friendCompilation?.output
|
||||
|
||||
override fun getClasspath(): FileCollection = libraries
|
||||
override fun setClasspath(configuration: FileCollection?) {
|
||||
|
||||
Reference in New Issue
Block a user