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
|
package org.jetbrains.kotlin.gradle.plugin
|
||||||
|
|
||||||
|
import groovy.lang.Closure
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.Named
|
import org.gradle.api.Named
|
||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.attributes.HasAttributes
|
import org.gradle.api.attributes.HasAttributes
|
||||||
import org.gradle.api.component.SoftwareComponent
|
import org.gradle.api.component.SoftwareComponent
|
||||||
import org.gradle.api.internal.component.UsageContext
|
import org.gradle.api.internal.component.UsageContext
|
||||||
|
import org.gradle.api.publish.maven.MavenPublication
|
||||||
|
|
||||||
interface KotlinTargetComponent : SoftwareComponent {
|
interface KotlinTargetComponent : SoftwareComponent {
|
||||||
val target: KotlinTarget
|
val target: KotlinTarget
|
||||||
@@ -39,5 +42,8 @@ interface KotlinTarget: Named, HasAttributes {
|
|||||||
|
|
||||||
fun createUsageContexts(): Set<UsageContext>
|
fun createUsageContexts(): Set<UsageContext>
|
||||||
|
|
||||||
|
fun mavenPublication(action: Closure<Unit>)
|
||||||
|
fun mavenPublication(action: Action<MavenPublication>)
|
||||||
|
|
||||||
override fun getName(): String = targetName
|
override fun getName(): String = targetName
|
||||||
}
|
}
|
||||||
+8
@@ -58,6 +58,14 @@ class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
Assert.assertTrue("$it should exist", groupDir.resolve(it).exists())
|
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()
|
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/CommonKt.class" in jvmJarEntries)
|
||||||
Assert.assertTrue("com/example/lib/MainKt.class" in jvmJarEntries)
|
Assert.assertTrue("com/example/lib/MainKt.class" in jvmJarEntries)
|
||||||
|
|||||||
+9
@@ -27,7 +27,16 @@ kotlin {
|
|||||||
fromPreset(presets.linuxX64, 'linux64')
|
fromPreset(presets.linuxX64, 'linux64')
|
||||||
fromPreset(presets.mingwX64, 'mingw64')
|
fromPreset(presets.mingwX64, 'mingw64')
|
||||||
fromPreset(presets.macosX64, 'macos64')
|
fromPreset(presets.macosX64, 'macos64')
|
||||||
|
|
||||||
|
all {
|
||||||
|
mavenPublication {
|
||||||
|
pom.withXml {
|
||||||
|
asNode().appendNode('name', 'Sample MPP library')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
jvm6Main {
|
jvm6Main {
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
+3
@@ -126,6 +126,9 @@ class KotlinMultiplatformPlugin(
|
|||||||
}
|
}
|
||||||
|
|
||||||
variant.publicationDelegate = variantPublication
|
variant.publicationDelegate = variantPublication
|
||||||
|
(target as AbstractKotlinTarget).publicationConfigureActions.all {
|
||||||
|
it.execute(variantPublication)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+17
@@ -4,6 +4,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
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.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.Dependency
|
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.attributes.AttributeContainer
|
||||||
import org.gradle.api.internal.component.UsageContext
|
import org.gradle.api.internal.component.UsageContext
|
||||||
import org.gradle.api.plugins.JavaPlugin
|
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.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
@@ -61,6 +67,17 @@ abstract class AbstractKotlinTarget (
|
|||||||
runtimeElementsConfigurationName
|
runtimeElementsConfigurationName
|
||||||
)
|
)
|
||||||
) else emptyList()
|
) 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) =
|
internal fun KotlinTarget.disambiguateName(simpleName: String) =
|
||||||
|
|||||||
+1
-2
@@ -108,8 +108,7 @@ open class KotlinNativeCompile : AbstractCompile() {
|
|||||||
@InputFiles get() = compilation.compileDependencyFiles
|
@InputFiles get() = compilation.compileDependencyFiles
|
||||||
|
|
||||||
private val friendModule: FileCollection?
|
private val friendModule: FileCollection?
|
||||||
// It's already taken into account in libraries
|
get() = compilation.friendCompilation?.output
|
||||||
@Internal get() = compilation.friendCompilation?.output
|
|
||||||
|
|
||||||
override fun getClasspath(): FileCollection = libraries
|
override fun getClasspath(): FileCollection = libraries
|
||||||
override fun setClasspath(configuration: FileCollection?) {
|
override fun setClasspath(configuration: FileCollection?) {
|
||||||
|
|||||||
Reference in New Issue
Block a user