From 765147b876d539b2923d9d200a523e303cb35e95 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Wed, 21 Nov 2012 19:29:49 +0400 Subject: [PATCH] Add Java Source Roots to classpath #KT-3062 Fixed Original commit: ff45322d1ae872a10d20e9c6b3178537547d7052 --- .../KotlinBuilderModuleScriptGenerator.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java index 119a622bb06..c43e99653ed 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java @@ -21,6 +21,7 @@ import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.compiler.runner.KotlinModuleScriptGenerator; +import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor; import org.jetbrains.jps.incremental.CompileContext; import org.jetbrains.jps.incremental.ModuleBuildTarget; import org.jetbrains.jps.incremental.messages.BuildMessage; @@ -31,10 +32,7 @@ import org.jetbrains.jps.model.java.JpsJavaDependenciesEnumerator; import org.jetbrains.jps.model.java.JpsJavaExtensionService; import org.jetbrains.jps.model.library.JpsLibrary; import org.jetbrains.jps.model.library.JpsLibraryRoot; -import org.jetbrains.jps.model.module.JpsDependencyElement; -import org.jetbrains.jps.model.module.JpsLibraryDependency; -import org.jetbrains.jps.model.module.JpsModule; -import org.jetbrains.jps.model.module.JpsSdkDependency; +import org.jetbrains.jps.model.module.*; import org.jetbrains.jps.util.JpsPathUtil; import java.io.File; @@ -51,7 +49,7 @@ public class KotlinBuilderModuleScriptGenerator { { CharSequence moduleScriptText = KotlinModuleScriptGenerator.generateModuleScript( target.getId(), - getKotlinModuleDependencies(target), + getKotlinModuleDependencies(context, target), sourceFiles, target.isTests(), // this excludes the output directory from the class path, to be removed for true incremental compilation @@ -65,11 +63,12 @@ public class KotlinBuilderModuleScriptGenerator { return scriptFile; } - private static DependencyProvider getKotlinModuleDependencies(final ModuleBuildTarget target) { + private static DependencyProvider getKotlinModuleDependencies(final CompileContext context, final ModuleBuildTarget target) { return new DependencyProvider() { @Override public void processClassPath(@NotNull KotlinModuleScriptGenerator.DependencyProcessor processor) { - processor.processClassPathSection("All", findClassPathRoots(target)); + processor.processClassPathSection("Classpath", findClassPathRoots(target)); + processor.processClassPathSection("Java Source Roots", findSourceRoots(context, target)); processor.processAnnotationRoots(findAnnotationRoots(target)); } }; @@ -93,6 +92,19 @@ public class KotlinBuilderModuleScriptGenerator { return dependencies.classes().getRoots(); } + @NotNull + private static Collection findSourceRoots(@NotNull CompileContext context, @NotNull ModuleBuildTarget target) { + List roots = context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context); + Collection result = ContainerUtil.newArrayList(); + for (JavaSourceRootDescriptor root : roots) { + File file = root.getRootFile(); + if (file.exists()) { + result.add(file); + } + } + return result; + } + @NotNull private static List findAnnotationRoots(@NotNull ModuleBuildTarget target) { JpsModule module = target.getModule();