KT-5219 Kotlin build fails when using Android Gradle plugin 0.11
#KT-5219 Fixed
This commit is contained in:
+9
-15
@@ -30,7 +30,6 @@ import com.android.build.gradle.BasePlugin
|
|||||||
import com.android.build.gradle.api.LibraryVariant
|
import com.android.build.gradle.api.LibraryVariant
|
||||||
import com.android.build.gradle.api.ApkVariant
|
import com.android.build.gradle.api.ApkVariant
|
||||||
import com.android.builder.model.BuildType
|
import com.android.builder.model.BuildType
|
||||||
import com.android.builder.BuilderConstants
|
|
||||||
import com.android.build.gradle.api.TestVariant
|
import com.android.build.gradle.api.TestVariant
|
||||||
import org.gradle.api.plugins.JavaPlugin
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
import org.gradle.api.artifacts.dsl.DependencyHandler
|
import org.gradle.api.artifacts.dsl.DependencyHandler
|
||||||
@@ -142,9 +141,8 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug
|
|||||||
val kotlinDirSet = kotlinSourceSet.getKotlin()
|
val kotlinDirSet = kotlinSourceSet.getKotlin()
|
||||||
kotlinDirSet.srcDir(project.file("src/${sourceSetName}/kotlin"))
|
kotlinDirSet.srcDir(project.file("src/${sourceSetName}/kotlin"))
|
||||||
|
|
||||||
sourceSet.getAllJava().source(kotlinDirSet)
|
AndroidGradleWrapper.srcDir(sourceSet, kotlinDirSet)
|
||||||
sourceSet.getAllSource().source(kotlinDirSet)
|
AndroidGradleWrapper.getResourceFilter(sourceSet)?.exclude(KSpec({ elem ->
|
||||||
sourceSet.getResources()?.getFilter()?.exclude(KSpec({ elem ->
|
|
||||||
kotlinDirSet.contains(elem.getFile())
|
kotlinDirSet.contains(elem.getFile())
|
||||||
}))
|
}))
|
||||||
project.getLogger().debug("Created kotlin sourceDirectorySet at ${kotlinDirSet.getSrcDirs()}")
|
project.getLogger().debug("Created kotlin sourceDirectorySet at ${kotlinDirSet.getSrcDirs()}")
|
||||||
@@ -178,7 +176,8 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug
|
|||||||
val logger = project.getLogger()
|
val logger = project.getLogger()
|
||||||
val kotlinOptions = getExtention<K2JVMCompilerArguments>(androidExt, "kotlinOptions")
|
val kotlinOptions = getExtention<K2JVMCompilerArguments>(androidExt, "kotlinOptions")
|
||||||
val sourceSets = androidExt.getSourceSets()
|
val sourceSets = androidExt.getSourceSets()
|
||||||
val mainSourceSet = sourceSets.getByName(BuilderConstants.MAIN)
|
//TODO: change to BuilderConstants.MAIN - it was relocated in 0.11 plugin
|
||||||
|
val mainSourceSet = sourceSets.getByName("main")
|
||||||
val testSourceSet = try {
|
val testSourceSet = try {
|
||||||
sourceSets.getByName("instrumentTest")
|
sourceSets.getByName("instrumentTest")
|
||||||
} catch (e: UnknownDomainObjectException) {
|
} catch (e: UnknownDomainObjectException) {
|
||||||
@@ -187,13 +186,8 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug
|
|||||||
|
|
||||||
for (variant in variants) {
|
for (variant in variants) {
|
||||||
if (variant is LibraryVariant || variant is ApkVariant) {
|
if (variant is LibraryVariant || variant is ApkVariant) {
|
||||||
val buildType: BuildType = if (variant is LibraryVariant) {
|
val buildTypeSourceSetName = AndroidGradleWrapper.getVariantName(variant)
|
||||||
variant.getBuildType()
|
|
||||||
} else {
|
|
||||||
(variant as ApkVariant).getBuildType()
|
|
||||||
}
|
|
||||||
|
|
||||||
val buildTypeSourceSetName = buildType.getName()
|
|
||||||
logger.debug("Variant build type is [$buildTypeSourceSetName]")
|
logger.debug("Variant build type is [$buildTypeSourceSetName]")
|
||||||
val buildTypeSourceSet : AndroidSourceSet? = sourceSets.findByName(buildTypeSourceSetName)
|
val buildTypeSourceSet : AndroidSourceSet? = sourceSets.findByName(buildTypeSourceSetName)
|
||||||
|
|
||||||
@@ -216,17 +210,17 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug
|
|||||||
val javaSourceList = ArrayList<Any?>()
|
val javaSourceList = ArrayList<Any?>()
|
||||||
|
|
||||||
if (variant is TestVariant) {
|
if (variant is TestVariant) {
|
||||||
javaSourceList.addAll(testSourceSet.getJava().getSrcDirs())
|
javaSourceList.addAll(AndroidGradleWrapper.getJavaSrcDirs(testSourceSet))
|
||||||
val testKotlinSource = getExtention<KotlinSourceSet>(testSourceSet, "kotlin")
|
val testKotlinSource = getExtention<KotlinSourceSet>(testSourceSet, "kotlin")
|
||||||
kotlinTask.source(testKotlinSource.getKotlin())
|
kotlinTask.source(testKotlinSource.getKotlin())
|
||||||
} else {
|
} else {
|
||||||
javaSourceList.addAll(mainSourceSet.getJava().getSrcDirs())
|
javaSourceList.addAll(AndroidGradleWrapper.getJavaSrcDirs(mainSourceSet))
|
||||||
val mainKotlinSource = getExtention<KotlinSourceSet>(mainSourceSet, "kotlin")
|
val mainKotlinSource = getExtention<KotlinSourceSet>(mainSourceSet, "kotlin")
|
||||||
kotlinTask.source(mainKotlinSource.getKotlin())
|
kotlinTask.source(mainKotlinSource.getKotlin())
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null != buildTypeSourceSet) {
|
if (null != buildTypeSourceSet) {
|
||||||
javaSourceList.add(buildTypeSourceSet.getJava().getSrcDirs())
|
javaSourceList.add(AndroidGradleWrapper.getJavaSrcDirs(buildTypeSourceSet))
|
||||||
kotlinTask.source(getExtention<KotlinSourceSet>(buildTypeSourceSet, "kotlin").getKotlin())
|
kotlinTask.source(getExtention<KotlinSourceSet>(buildTypeSourceSet, "kotlin").getKotlin())
|
||||||
}
|
}
|
||||||
javaSourceList.add(Callable<File?>{ variant.getProcessResources().getSourceOutputDir() })
|
javaSourceList.add(Callable<File?>{ variant.getProcessResources().getSourceOutputDir() })
|
||||||
@@ -239,7 +233,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug
|
|||||||
val flavourSourceSetName = buildTypeSourceSetName + flavour.getName()
|
val flavourSourceSetName = buildTypeSourceSetName + flavour.getName()
|
||||||
val flavourSourceSet : AndroidSourceSet? = sourceSets.findByName(flavourSourceSetName)
|
val flavourSourceSet : AndroidSourceSet? = sourceSets.findByName(flavourSourceSetName)
|
||||||
if (flavourSourceSet != null) {
|
if (flavourSourceSet != null) {
|
||||||
javaSourceList.add(flavourSourceSet.getJava())
|
javaSourceList.add(AndroidGradleWrapper.getJavaSrcDirs(flavourSourceSet))
|
||||||
kotlinTask.source((buildTypeSourceSet as ExtensionAware).getExtensions().getByName("kotlin"))
|
kotlinTask.source((buildTypeSourceSet as ExtensionAware).getExtensions().getByName("kotlin"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+35
-7
@@ -1,14 +1,42 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.android
|
package org.jetbrains.kotlin.gradle.plugin.android
|
||||||
|
|
||||||
import com.android.build.gradle.BasePlugin
|
import com.android.build.gradle.BasePlugin
|
||||||
|
import org.gradle.api.tasks.util.PatternFilterable
|
||||||
|
import org.jetbrains.annotations.NotNull
|
||||||
|
|
||||||
class AndroidGradleWrapper {
|
class AndroidGradleWrapper {
|
||||||
static def getRuntimeJars(BasePlugin basePlugin) {
|
static def getRuntimeJars(BasePlugin basePlugin) {
|
||||||
if (basePlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
|
if (basePlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
|
||||||
return basePlugin.getRuntimeJarList()
|
return basePlugin.getRuntimeJarList()
|
||||||
}
|
|
||||||
else {
|
|
||||||
return basePlugin.getBootClasspath()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return basePlugin.getBootClasspath()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static def srcDir(Object androidSourceSet, Object kotlinDirSet) {
|
||||||
|
/*before 0.11 gradle android plugin there was:
|
||||||
|
androidSourceSet.getAllJava().source(kotlinDirSet)
|
||||||
|
androidSourceSet.getAllSource().source(kotlinDirSet)
|
||||||
|
but those methods were removed so as temporary hack next code was suggested*/
|
||||||
|
androidSourceSet.getJava().srcDir(kotlinDirSet)
|
||||||
|
}
|
||||||
|
|
||||||
|
static def PatternFilterable getResourceFilter(Object androidSourceSet) {
|
||||||
|
def resources = androidSourceSet.getResources()
|
||||||
|
if (resources != null) {
|
||||||
|
return resources.getFilter()
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
static def String getVariantName(Object variant) {
|
||||||
|
return variant.getBuildType().getName()
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
static def Set<File> getJavaSrcDirs(Object androidSourceSet) {
|
||||||
|
return androidSourceSet.getJava().getSrcDirs()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user