Ignore "module per source set" option in Android projects

This commit is contained in:
Dmitry Jemerov
2017-10-20 14:59:57 +02:00
parent 14a30e09c6
commit f589c9baf0
@@ -61,6 +61,15 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
return setOf(KotlinGradleModel::class.java) return setOf(KotlinGradleModel::class.java)
} }
private fun useModulePerSourceSet(): Boolean {
// See AndroidGradleProjectResolver
val isAndroidProjectKey = Key.findKeyByName("IS_ANDROID_PROJECT_KEY")
if (isAndroidProjectKey != null && resolverCtx.getUserData(isAndroidProjectKey) == true) {
return false
}
return resolverCtx.isResolveModulePerSourceSet
}
override fun populateModuleDependencies(gradleModule: IdeaModule, override fun populateModuleDependencies(gradleModule: IdeaModule,
ideModule: DataNode<ModuleData>, ideModule: DataNode<ModuleData>,
ideProject: DataNode<ProjectData>) { ideProject: DataNode<ProjectData>) {
@@ -76,7 +85,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
if (this != ideModule) gradleIdeaProject.modules.firstOrNull { it.gradleProject.path == data.id } else gradleModule if (this != ideModule) gradleIdeaProject.modules.firstOrNull { it.gradleProject.path == data.id } else gradleModule
fun DataNode<out ModuleData>.getDependencies(): Set<DataNode<out ModuleData>> { fun DataNode<out ModuleData>.getDependencies(): Set<DataNode<out ModuleData>> {
if (resolverCtx.isResolveModulePerSourceSet) { if (useModulePerSourceSet()) {
if (sourceSetByName == null) return emptySet() if (sourceSetByName == null) return emptySet()
val externalSourceSet = sourceSetByName[data.id]?.second ?: return emptySet() val externalSourceSet = sourceSetByName[data.id]?.second ?: return emptySet()
return externalSourceSet.dependencies.mapNotNullTo(LinkedHashSet()) { dependency -> return externalSourceSet.dependencies.mapNotNullTo(LinkedHashSet()) { dependency ->
@@ -111,7 +120,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
} }
fun addTransitiveDependenciesOnImplementedModules() { fun addTransitiveDependenciesOnImplementedModules() {
val moduleNodesToProcess = if (resolverCtx.isResolveModulePerSourceSet) { val moduleNodesToProcess = if (useModulePerSourceSet()) {
ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY) ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)
} }
else listOf(ideModule) else listOf(ideModule)
@@ -125,7 +134,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
val moduleNode = toProcess.pollFirst() val moduleNode = toProcess.pollFirst()
processed.add(moduleNode) processed.add(moduleNode)
val moduleNodeForGradleModel = if (resolverCtx.isResolveModulePerSourceSet) { val moduleNodeForGradleModel = if (useModulePerSourceSet()) {
ExternalSystemApiUtil.findParent(moduleNode, ProjectKeys.MODULE) ExternalSystemApiUtil.findParent(moduleNode, ProjectKeys.MODULE)
} }
else moduleNode else moduleNode
@@ -137,7 +146,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
val implementsInfo = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements val implementsInfo = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements
val targetModule = implementsInfo?.let { findModule(ideProject, it) } val targetModule = implementsInfo?.let { findModule(ideProject, it) }
if (targetModule != null) { if (targetModule != null) {
if (resolverCtx.isResolveModulePerSourceSet) { if (useModulePerSourceSet()) {
val targetSourceSetsByName = ExternalSystemApiUtil val targetSourceSetsByName = ExternalSystemApiUtil
.findAll(targetModule, GradleSourceSetData.KEY) .findAll(targetModule, GradleSourceSetData.KEY)
.associateBy { it.sourceSetName } .associateBy { it.sourceSetName }