Expose statically-typed kotlinOptions and compileKotlinTask in DSL
To simplify configuring a `KotlinCompilation` with Gradle Kotlin DSL, it is essential to expose statically-known types where possible. This commit parametrizes `KotlinCompilation` with its Kotlin options type (a subtype of `KotlinCommonOptions`) and adds `kotlinOptions` and `compileKotlinTask` to `KotlinCompilation`. (minor) Also reduce the visibility of `attachClassesDir` and `setupPlugins` to internal, since this API is not for external use.
This commit is contained in:
+3
-3
@@ -9,9 +9,9 @@ import groovy.lang.Closure
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Named
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.tasks.SourceSetOutput
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
|
||||
interface CInteropSettings: Named {
|
||||
interface CInteropSettings : Named {
|
||||
|
||||
interface IncludeDirectories {
|
||||
fun allHeaders(vararg includeDirs: Any)
|
||||
@@ -22,7 +22,7 @@ interface CInteropSettings: Named {
|
||||
}
|
||||
|
||||
// TODO: Provide an interface for native compilations.
|
||||
val compilation: KotlinCompilation
|
||||
val compilation: KotlinCompilation<KotlinCommonOptions>
|
||||
|
||||
val dependencyConfigurationName: String
|
||||
var dependencyFiles: FileCollection
|
||||
|
||||
+12
-3
@@ -9,6 +9,9 @@ import org.gradle.api.Named
|
||||
import org.gradle.api.attributes.HasAttributes
|
||||
import org.gradle.api.file.ConfigurableFileCollection
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
|
||||
import java.io.File
|
||||
|
||||
interface KotlinCompilationOutput {
|
||||
@@ -19,7 +22,7 @@ interface KotlinCompilationOutput {
|
||||
val allOutputs: FileCollection
|
||||
}
|
||||
|
||||
interface KotlinCompilation: Named, HasAttributes, HasKotlinDependencies {
|
||||
interface KotlinCompilation<out T : KotlinCommonOptions> : Named, HasAttributes, HasKotlinDependencies {
|
||||
val target: KotlinTarget
|
||||
|
||||
val compilationName: String
|
||||
@@ -36,6 +39,12 @@ interface KotlinCompilation: Named, HasAttributes, HasKotlinDependencies {
|
||||
|
||||
val compileKotlinTaskName: String
|
||||
|
||||
val compileKotlinTask: KotlinCompile<T>
|
||||
|
||||
val kotlinOptions: T
|
||||
|
||||
fun kotlinOptions(configure: T.() -> Unit)
|
||||
|
||||
val compileAllTaskName: String
|
||||
|
||||
companion object {
|
||||
@@ -51,7 +60,7 @@ interface KotlinCompilation: Named, HasAttributes, HasKotlinDependencies {
|
||||
get() = super.relatedConfigurationNames + compileDependencyConfigurationName
|
||||
}
|
||||
|
||||
interface KotlinCompilationToRunnableFiles : KotlinCompilation {
|
||||
interface KotlinCompilationToRunnableFiles<T : KotlinCommonOptions> : KotlinCompilation<T> {
|
||||
val runtimeDependencyConfigurationName: String
|
||||
|
||||
var runtimeDependencyFiles: FileCollection
|
||||
@@ -60,6 +69,6 @@ interface KotlinCompilationToRunnableFiles : KotlinCompilation {
|
||||
get() = super.relatedConfigurationNames + runtimeDependencyConfigurationName
|
||||
}
|
||||
|
||||
interface KotlinCompilationWithResources : KotlinCompilation {
|
||||
interface KotlinCompilationWithResources<T : KotlinCommonOptions> : KotlinCompilation<T> {
|
||||
val processResourcesTaskName: String
|
||||
}
|
||||
+2
-1
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import java.io.File
|
||||
|
||||
open class SubpluginOption(val key: String, val value: String)
|
||||
@@ -56,7 +57,7 @@ interface KotlinGradleSubplugin<in KotlinCompile : AbstractCompile> {
|
||||
javaCompile: AbstractCompile?,
|
||||
variantData: Any?,
|
||||
androidProjectHandler: Any?,
|
||||
kotlinCompilation: KotlinCompilation?
|
||||
kotlinCompilation: KotlinCompilation<KotlinCommonOptions>?
|
||||
): List<SubpluginOption>
|
||||
|
||||
fun getSubpluginKotlinTasks(
|
||||
|
||||
+4
-2
@@ -14,19 +14,21 @@ 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
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
|
||||
interface KotlinTargetComponent : SoftwareComponent {
|
||||
val target: KotlinTarget
|
||||
val publishable: Boolean
|
||||
}
|
||||
|
||||
interface KotlinTarget: Named, HasAttributes {
|
||||
interface KotlinTarget : Named, HasAttributes {
|
||||
val targetName: String
|
||||
val disambiguationClassifier: String? get() = targetName
|
||||
|
||||
val platformType: KotlinPlatformType
|
||||
|
||||
val compilations: NamedDomainObjectContainer<out KotlinCompilation>
|
||||
val compilations: NamedDomainObjectContainer<out KotlinCompilation<KotlinCommonOptions>>
|
||||
|
||||
val project: Project
|
||||
|
||||
|
||||
Reference in New Issue
Block a user