From a3ab3c5afc66b74b23ed669dd45666eefcd4e1b9 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Thu, 10 Dec 2015 18:54:28 +0300 Subject: [PATCH] gradle: do not add additional source folders from 'idea' plugin to main and test modules if it is already belong to some other custom source set --- .../builder/ExternalProjectBuilderImpl.groovy | 51 +++++++++++++++---- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ExternalProjectBuilderImpl.groovy b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ExternalProjectBuilderImpl.groovy index cb059b5386b6..8a0b7c3d4700 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ExternalProjectBuilderImpl.groovy +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ExternalProjectBuilderImpl.groovy @@ -153,14 +153,21 @@ class ExternalProjectBuilderImpl implements ModelBuilderService { boolean inheritOutputDirs = ideaPluginModule?.inheritOutputDirs ?: false def ideaOutDir = ideaPluginModule?.outputDir def ideaTestOutDir = ideaPluginModule?.testOutputDir - def generatedSourceDirs = ideaPluginModule?.hasProperty("generatedSourceDirs") ? ideaPluginModule?.generatedSourceDirs: null; - def ideaSourceDirs = ideaPluginModule?.sourceDirs; - def ideaTestSourceDirs = ideaPluginModule?.testSourceDirs; + def generatedSourceDirs + def ideaSourceDirs + def ideaTestSourceDirs def downloadJavadoc = false def downloadSources = true if(ideaPluginModule) { + generatedSourceDirs = ideaPluginModule.hasProperty("generatedSourceDirs") ? new LinkedHashSet<>(ideaPluginModule.generatedSourceDirs): null + ideaSourceDirs = new LinkedHashSet<>(ideaPluginModule.sourceDirs) + ideaTestSourceDirs = new LinkedHashSet<>(ideaPluginModule.testSourceDirs) downloadJavadoc = ideaPluginModule.downloadJavadoc downloadSources = ideaPluginModule.downloadSources + } else { + generatedSourceDirs = null + ideaSourceDirs = null + ideaTestSourceDirs = null } def projectSourceCompatibility @@ -213,12 +220,6 @@ class ExternalProjectBuilderImpl implements ModelBuilderService { // javaDirectorySet.excludes = javaExcludes + sourceSet.java.excludes; // javaDirectorySet.includes = javaIncludes + sourceSet.java.includes; - if (SourceSet.MAIN_SOURCE_SET_NAME.equals(sourceSet.name)) { - javaDirectorySet.srcDirs.addAll(ideaSourceDirs - sourceSet.resources.srcDirs) - } else if(SourceSet.TEST_SOURCE_SET_NAME.equals(sourceSet.name)){ - javaDirectorySet.srcDirs.addAll(ideaTestSourceDirs - sourceSet.resources.srcDirs) - } - ExternalSourceDirectorySet generatedDirectorySet = null if(generatedSourceDirs && !generatedSourceDirs.isEmpty()) { def files = new HashSet() @@ -261,9 +262,16 @@ class ExternalProjectBuilderImpl implements ModelBuilderService { resourcesDirectorySet.filters = filterReaders sources.put(ExternalSystemSourceType.SOURCE, javaDirectorySet) sources.put(ExternalSystemSourceType.RESOURCE, resourcesDirectorySet) - if(generatedDirectorySet) { + if (generatedDirectorySet) { sources.put(ExternalSystemSourceType.SOURCE_GENERATED, generatedDirectorySet) } + + if (ideaPluginModule && !SourceSet.MAIN_SOURCE_SET_NAME.equals(sourceSet.name) && !SourceSet.TEST_SOURCE_SET_NAME.equals(sourceSet.name)) { + sources.values().each { + ideaSourceDirs.removeAll(it.srcDirs) + ideaTestSourceDirs.removeAll(it.srcDirs) + } + } } def dependencies = new DependencyResolverImpl(project, isPreview, downloadJavadoc, downloadSources).resolveDependencies(sourceSet) @@ -272,6 +280,29 @@ class ExternalProjectBuilderImpl implements ModelBuilderService { externalSourceSet.sources = sources result[sourceSet.name] = externalSourceSet } + + def mainSourceSet = result[SourceSet.MAIN_SOURCE_SET_NAME] + if(ideaPluginModule && mainSourceSet && ideaSourceDirs && !ideaSourceDirs.isEmpty()) { + def mainGradleSourceSet = sourceSets.findByName(SourceSet.MAIN_SOURCE_SET_NAME) + if(mainGradleSourceSet) { + def mainSourceDirectorySet = mainSourceSet.sources[ExternalSystemSourceType.SOURCE] + if(mainSourceDirectorySet) { + mainSourceDirectorySet.srcDirs.addAll(ideaSourceDirs - mainGradleSourceSet.resources.srcDirs) + } + } + } + + def testSourceSet = result[SourceSet.TEST_SOURCE_SET_NAME] + if(ideaPluginModule && testSourceSet && ideaTestSourceDirs && !ideaSourceDirs.isEmpty()) { + def testGradleSourceSet = sourceSets.findByName(SourceSet.TEST_SOURCE_SET_NAME) + if(testGradleSourceSet) { + def testSourceDirectorySet = testSourceSet.sources[ExternalSystemSourceType.TEST] + if(testSourceDirectorySet) { + testSourceDirectorySet.srcDirs.addAll(ideaTestSourceDirs - testGradleSourceSet.resources.srcDirs) + } + } + } + result }