diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java index 1fd57fa8a8a2..39afc8ebb5e6 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/BaseGradleProjectResolverExtension.java @@ -46,6 +46,7 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtilRt; +import com.intellij.util.containers.MultiMap; import com.intellij.util.net.HttpConfigurable; import com.intellij.util.text.CharArrayUtil; import groovy.lang.GroovyObject; @@ -393,6 +394,11 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver processSourceSets(resolverCtx, gradleModule, externalProject, ideModule, new SourceSetsProcessor() { @Override public void process(@NotNull DataNode dataNode, @NotNull ExternalSourceSet sourceSet) { + MultiMap gradleOutputMap = dataNode.getUserData(GradleProjectResolver.GRADLE_OUTPUTS); + if (gradleOutputMap == null) { + gradleOutputMap = MultiMap.create(); + dataNode.putUserData(GradleProjectResolver.GRADLE_OUTPUTS, gradleOutputMap); + } for (Map.Entry directorySetEntry : sourceSet.getSources().entrySet()) { ExternalSystemSourceType sourceType = ExternalSystemSourceType.from(directorySetEntry.getKey()); ExternalSourceDirectorySet sourceDirectorySet = directorySetEntry.getValue(); @@ -402,21 +408,13 @@ public class BaseGradleProjectResolverExtension implements GradleProjectResolver moduleData.setCompileOutputPath(sourceType, outputDir.getAbsolutePath()); moduleData.setInheritProjectCompileOutputPath(sourceDirectorySet.isCompilerOutputPathInherited()); - - String gradleOutputPath = moduleData.getCompileOutputPath(sourceType); for (File gradleOutputDir : sourceDirectorySet.getGradleOutputDirs()) { + String gradleOutputPath = ExternalSystemApiUtil.toCanonicalPath(gradleOutputDir.getAbsolutePath()); + gradleOutputMap.putValue(sourceType, gradleOutputPath); if(!gradleOutputDir.getPath().equals(outputDir.getPath())) { - gradleOutputPath = ExternalSystemApiUtil.toCanonicalPath(gradleOutputDir.getAbsolutePath()); moduleOutputsMap.put(gradleOutputPath, Pair.create(moduleData.getId(), sourceType)); } } - - Map map = dataNode.getUserData(GradleProjectResolver.GRADLE_OUTPUTS); - if(map == null) { - map = ContainerUtil.newHashMap(); - dataNode.putUserData(GradleProjectResolver.GRADLE_OUTPUTS, map); - } - map.put(sourceType, gradleOutputPath); } } }); diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java index a7c87b3d2522..e16b0f44884e 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java @@ -89,7 +89,7 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver>> MODULES_OUTPUTS = Key.create("moduleOutputsMap"); - public static final Key> GRADLE_OUTPUTS = Key.create("gradleOutputs"); + public static final Key> GRADLE_OUTPUTS = Key.create("gradleOutputs"); public static final Key> CONFIGURATION_ARTIFACTS = Key.create("gradleArtifactsMap"); @@ -526,10 +526,11 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver compileSet = ContainerUtil.newHashSet(); - Map gradleOutputs = pair.first.getUserData(GRADLE_OUTPUTS); + MultiMap gradleOutputs = pair.first.getUserData(GRADLE_OUTPUTS); if(gradleOutputs != null) { ContainerUtil.addAllNotNull(compileSet, - gradleOutputs.get(ExternalSystemSourceType.SOURCE), + gradleOutputs.get(ExternalSystemSourceType.SOURCE)); + ContainerUtil.addAllNotNull(compileSet, gradleOutputs.get(ExternalSystemSourceType.RESOURCE)); } if (!compileSet.isEmpty() && ContainerUtil.intersects(libraryPaths, compileSet)) { @@ -539,7 +540,8 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver testSet = ContainerUtil.newHashSet(); if(gradleOutputs != null) { ContainerUtil.addAllNotNull(testSet, - gradleOutputs.get(ExternalSystemSourceType.TEST), + gradleOutputs.get(ExternalSystemSourceType.TEST)); + ContainerUtil.addAllNotNull(testSet, gradleOutputs.get(ExternalSystemSourceType.TEST_RESOURCE)); } if (!testSet.isEmpty() && ContainerUtil.intersects(libraryPaths, testSet)) {