diff --git a/java/debugger/impl/debugger-impl.iml b/java/debugger/impl/debugger-impl.iml
index 48a24aaa6717..a4a7834fe605 100644
--- a/java/debugger/impl/debugger-impl.iml
+++ b/java/debugger/impl/debugger-impl.iml
@@ -21,6 +21,7 @@
+
diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/CompilingEvaluatorImpl.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/CompilingEvaluatorImpl.java
index 541210b25209..df0fbdec04ab 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/CompilingEvaluatorImpl.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/CompilingEvaluatorImpl.java
@@ -15,6 +15,7 @@
*/
package com.intellij.debugger.ui.impl.watch;
+import com.intellij.compiler.CompilerConfiguration;
import com.intellij.compiler.server.BuildManager;
import com.intellij.debugger.engine.evaluation.EvaluateException;
import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
@@ -37,6 +38,8 @@ import com.intellij.psi.PsiFile;
import com.intellij.refactoring.extractMethodObject.ExtractLightMethodObjectHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jps.incremental.java.JavaBuilder;
+import org.jetbrains.jps.model.java.compiler.AnnotationProcessingConfiguration;
import java.io.File;
import java.io.IOException;
@@ -62,12 +65,13 @@ public class CompilingEvaluatorImpl extends CompilingEvaluator {
}
});
final List options = new ArrayList<>();
- options.add("-proc:none"); // for our purposes annotation processing is not needed
options.add("-encoding");
options.add("UTF-8");
final List platformClasspath = new ArrayList<>();
final List classpath = new ArrayList<>();
+ AnnotationProcessingConfiguration profile = null;
if (module != null) {
+ profile = CompilerConfiguration.getInstance(module.getProject()).getAnnotationProcessingConfiguration(module);
final ModuleRootManager rootManager = ModuleRootManager.getInstance(module);
for (String s : rootManager.orderEntries().compileOnly().recursively().exportedOnly().withoutSdk().getPathsList().getPathList()) {
classpath.add(new File(s));
@@ -76,6 +80,7 @@ public class CompilingEvaluatorImpl extends CompilingEvaluator {
platformClasspath.add(new File(s));
}
}
+ JavaBuilder.addAnnotationProcessingOptions(options, profile);
final Pair runtime = BuildManager.getBuildProcessRuntimeSdk(myEvaluationContext.getProject());
final JavaSdkVersion buildRuntimeVersion = runtime.getSecond();
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
index f96f58f63565..9b107033d1fb 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java
@@ -677,24 +677,7 @@ public class JavaBuilder extends ModuleLevelBuilder {
addCrossCompilationOptions(compilerSdkVersion, options, context, chunk);
- if (profile != null && profile.isEnabled()) {
- // configuring annotation processing
- if (!profile.isObtainProcessorsFromClasspath()) {
- final String processorsPath = profile.getProcessorPath();
- options.add("-processorpath");
- options.add(FileUtil.toSystemDependentName(processorsPath.trim()));
- }
-
- final Set processors = profile.getProcessors();
- if (!processors.isEmpty()) {
- options.add("-processor");
- options.add(StringUtil.join(processors, ","));
- }
-
- for (Map.Entry optionEntry : profile.getProcessorOptions().entrySet()) {
- options.add("-A" + optionEntry.getKey() + "=" + optionEntry.getValue());
- }
-
+ if (addAnnotationProcessingOptions(options, profile)) {
final File srcOutput = ProjectPaths.getAnnotationProcessorGeneratedSourcesOutputDir(
chunk.getModules().iterator().next(), chunk.containsTests(), profile
);
@@ -704,11 +687,39 @@ public class JavaBuilder extends ModuleLevelBuilder {
options.add(srcOutput.getPath());
}
}
- else {
- options.add("-proc:none");
- }
}
+ /**
+ * @param options
+ * @param profile
+ * @return true if annotation processing is enabled and corresponding options were added, false if profile is null or disabled
+ */
+ public static boolean addAnnotationProcessingOptions(List options, @Nullable AnnotationProcessingConfiguration profile) {
+ if (profile == null || !profile.isEnabled()) {
+ options.add("-proc:none");
+ return false;
+ }
+
+ // configuring annotation processing
+ if (!profile.isObtainProcessorsFromClasspath()) {
+ final String processorsPath = profile.getProcessorPath();
+ options.add("-processorpath");
+ options.add(FileUtil.toSystemDependentName(processorsPath.trim()));
+ }
+
+ final Set processors = profile.getProcessors();
+ if (!processors.isEmpty()) {
+ options.add("-processor");
+ options.add(StringUtil.join(processors, ","));
+ }
+
+ for (Map.Entry optionEntry : profile.getProcessorOptions().entrySet()) {
+ options.add("-A" + optionEntry.getKey() + "=" + optionEntry.getValue());
+ }
+ return true;
+ }
+
+
private static void addCrossCompilationOptions(final int compilerSdkVersion, final List options, final CompileContext context, final ModuleChunk chunk) {
final JpsJavaCompilerConfiguration compilerConfiguration = JpsJavaExtensionService.getInstance().getOrCreateCompilerConfiguration(
context.getProjectDescriptor().getProject()