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:
Ilya Matveev
2018-09-17 11:04:55 +03:00
committed by GitHub
parent 1b889c976a
commit ea1abb0680
6 changed files with 44 additions and 2 deletions
@@ -126,6 +126,9 @@ class KotlinMultiplatformPlugin(
}
variant.publicationDelegate = variantPublication
(target as AbstractKotlinTarget).publicationConfigureActions.all {
it.execute(variantPublication)
}
}
}
@@ -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) =
@@ -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?) {